【Android】OkHttp安装与使用
来源:互联网 发布:c语言写幻灯相册 编辑:程序博客网 时间:2024/06/05 19:38
1.AndroidStudio下安装:
File →Project Structre→App→Dependencies→"+"→LibararyDependency→ 搜索OkHTTP→“com.squareup.okhttp:okhttp:2.7.5”(或更高) OK
2.get请求 :获取一个网页内容:
1) OkHttpClient:新建一个OkHttpClient实例,用于处理请求。
2) Request:构建请求参数,如url,请求方式,请求参数,header等。
3) Call:生成一个具体请求实例,相当于将请求封装成了任务;两种方式:
①、call.execute(),非异步方式,会阻塞线程,等待返回结果。
②、call.enqueue(Callback),异步方式。
4) Response:结果响应。
说明:
① onResponse回调的参数是response,一般情况下,比如我们希望获得返回的字符串,可以通过response.body().string()获取;如果希望获得返回的二进制字节数组,则调用response.body().bytes();如果你想拿到返回的inputStream,则调用response.body().byteStream()。
② Callback的onFailure()及onResponse()运行在非主线程,不能在该方法中直接进行UI操作。
示例:点击一个按钮,TextView中显示网页源码:
public class MainActivity extends AppCompatActivity { private OkHttpClient client = new OkHttpClient(); private TextView tv; private String data; private Handler handler=new Handler() { public void handleMessage(Message msg) { switch( msg.what) { case 0x001: Toast.makeText(MainActivity.this, "内容是"+data, Toast.LENGTH_SHORT).show(); tv.setText(data); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button)findViewById(R.id.button); tv =(TextView)findViewById(R.id.textView); btn.setOnClickListener(new BtnOnClickListener()); } class BtnOnClickListener implements View.OnClickListener { @Override public void onClick(View v) {String url="https://www.baidu.com";final Request request = new Request.Builder().url(url).build(); new Thread(new Runnable() { @Override public void run() { Response response = null; try { response = client.newCall(request).execute(); if (response.isSuccessful()) { data=response.body().string(); handler.sendEmptyMessage(0x001); } else { throw new IOException("Unexpected code " + response); } } catch (IOException e) { e.printStackTrace(); } } }).start(); // Call call = client.newCall(request); //call.enqueue(new Callback() { // @Override // public void onFailure(Call call, IOException e) { // } // @Override // public void onResponse(Call call, final Response response) throws IOException { // data=response.body().string(); // handler.sendEmptyMessage(0x001); // } // }); } } }
Android中不允许UI线程进行网络请求 也不允许在非UI线程更新界面 所以我们开了一个新线程并用了handler。
0 0
- 【Android】OkHttp安装与使用
- Android OkHttp使用与封装
- Android OkHttp使用与分析
- Android OKHttp介绍与使用(一)
- Android OKHttp介绍与使用(二)
- Android 使用OkHttp
- Android 使用OkHttp
- android OkHttp的使用
- android okhttp封装使用
- Android 使用OkHttp
- Android 使用OkHttp
- Android 使用OkHttp
- #Android OkHttp使用教程
- android OkHttp的使用
- Android中OkHttp使用
- android:retrofit+OKHttp使用
- Android平台使用okhttp
- android学习---使用OkHttp
- jsp,JavaScript,HTML跳转页面方法总结
- Node.js Express 框架
- Blog整体搬家通知
- URI和URL
- [转]动态更新Toolbar Menu以及Menu中同时显示文字和图标
- 【Android】OkHttp安装与使用
- outlook邮箱日历华为手机与电脑同步设置
- 通过XShell链接虚拟机的CentOS
- 1108. Finding Average (20)
- Eigen库求取最大特征值和特征向量
- Angular - 语义化版本控制规范(SEMVER)- 没有 Angular 3 ,Angular 4 计划2017年3月发布
- CentOS虚拟机NAT方式无法上网解决方法
- Hibernate5.2.6使用schemaExport报错以及创建表后数据库中不显示
- StAX处理xml(Stream API for XML)