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
- post请求网络数据,返回给主线程更新UI实例
- Handler.post()解决非主线程更新UI
- 子线程获取数据,主线程更新UI
- 在主线程更新UI
- iOS主线程更新UI
- iOS 主线程更新UI
- Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
- Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
- ios 中请求主线程刷新UI
- ios 中请求主线程刷新UI
- ios 中请求主线程刷新UI
- ios 中请求主线程刷新UI
- Android之UI主线程更新问题
- AsnycTask更新主线程UI基本代码
- Handler更新主线程UI常用方法
- Android只有主线程才能更新UI?
- UI更新就该放到主线程
- IOS 更新UI的主线程方法
- Spring_Spring Boot Actuator
- QT编程时,,界面不阻塞立刻显示
- SharedPreference.Editor的apply和commit方法的区别
- 仿微信消息列表(RecycleView)双击移动未读消息
- Android Power Management 实现
- post请求网络数据,返回给主线程更新UI实例
- c++ 并行编程
- linux批量删除大量小文件
- spring applicationContext.xml 配置文件详解
- ASP.NET实现三层架构网站创建流程
- 三步实现控件悬浮
- 可以作为URL传输的BASE64编码格式的数据
- 我的NDK学习开发笔记(四)
- ubuntu下右键无法打开终端(open in terminal)的解决办法