1. 程式人生 > >post請求網路資料,返回給主執行緒更新UI例項

post請求網路資料,返回給主執行緒更新UI例項

postHttp封裝的程式碼
package honghu.com.test.http;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import java.io.IOException;
import honghu.com.test.jiekou.DataResult;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient
; import okhttp3.Request; import okhttp3.Response; /** * Created by Administrator on 2017/5/2. */ public class PostHttp { private DataResult dataResult; private String url; private Handler handler; public PostHttp(DataResult dataResult, String mUrl, Handler handler) { this.dataResult
= dataResult; this.url = mUrl; this.handler = handler; } public void getPost() { OkHttpClient okHttpClient = new OkHttpClient(); FormBody formBody = new FormBody.Builder().add("size", "10").build(); Request request = new Request.Builder().url(url).post(formBody).build();
Call call = okHttpClient.newCall(request); //在子執行緒裡邊開啟任務 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { //得到的請求結果 String string = response.body().string(); Log.d("pengqun","string------------"+string); Message msg = new Message().obtain(); Bundle bundle = new Bundle(); bundle.putString("res", string); msg.setData(bundle); handler.sendMessage(msg); //回撥 dataResult.rtd(string); } }); }

}

main Activity程式碼

package honghu.com.test;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import honghu.com.test.http.PostHttp;
import honghu.com.test.jiekou.DataResult;
public class Main9Activity extends AppCompatActivity implements DataResult {
    private String url = "http://www.imooc.com/api/teacher?type=4&num=30";
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main9);
PostHttp postHttp = new PostHttp(Main9Activity.this, url, handler);
postHttp.getPost();
}

    Handler handler = new Handler() {

        @Override
public void handleMessage(Message msg) {
            super.handleMessage(msg);
Bundle data = msg.getData();
String res = data.getString("res");
            if (res.equals("") && res == null){
                Log.d("彭群", "-------res-----" + res);
}else{
                Log.d("彭群", "-------res-----" + res);
}
            TextView main9_tv=(TextView)findViewById(R.id.main9_tv);
main9_tv.setText(res);
}
    };
@Override
public void rtd(String rtds) {
        Log.d("蓬裙", "--------rtds--------" + rtds);
}
  }
回撥介面(多餘的一部分程式碼,可以不用看)
package honghu.com.test.jiekou;
/**
 * Created by Administrator on 2017/5/2.
 */
public interface CallBack {
    String solve(String result);
}