post请求网络数据,返回给主线程更新UI实例

来源:互联网 发布:关口知宏漫画 编辑:程序博客网 时间:2024/06/05 11:38
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);}


0 0
原创粉丝点击