okhttp的使用
2016-06-08 20:29
204 查看
okhttp的使用
An HTTP & HTTP/2 client for Android and Java applications. okhttp是一个很热门的框架,使用起来比以前的简单而且功能强大. 关于这一部分的发展大概是如下图okhttp的github地址
代码实现
package com.example.whoami.okhttpdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import com.google.gson.reflect.TypeToken; import java.io.IOException; import java.lang.reflect.Type; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import okhttp3.ResponseBody; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //通过get请求数据 public void get(View view){ //下面的代码不可以放在UI线程里面 String url = "http://112.124.22.238:8081/course_api/banner/query/?type=1"; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); try { Response response = client.newCall(request).execute();//异步 if(response.isSuccessful()) { ResponseBody body = response.body(); String json = body.string(); } } catch (IOException e) { e.printStackTrace(); } } public void get_1(View view){ String url = "http://112.124.22.238:8081/course_api/banner/query/?type=1"; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { ResponseBody body = response.body(); String json = body.string(); } }); } public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); //客户端post json代码如下 public void post(){ OkHttpClient client = new OkHttpClient(); String json = "json"; RequestBody body = RequestBody.create(JSON,json); Request request = new Request.Builder() .url("uri") .post(body) .build(); try { Response response = client.newCall(request).execute(); if(response.isSuccessful()){ String dataForService = response.body().string(); } } catch (IOException e) { e.printStackTrace(); } } //form 表单提交 public void post_1(){ OkHttpClient client = new OkHttpClient(); FormBody body = new FormBody.Builder() .add("key","value") .add("key", "value") .add("key","value") .add("key","value") .build(); Request request = new Request.Builder() .url("url") .post(body) .build(); try { Response response = client.newCall(request).execute(); } catch (IOException e) { e.printStackTrace(); } } //通过gson解析对象 //json = [{name:"a"},{name:"a"},{name:"a"}] public void useGson(String json){ /* Type type =new TypeToken<List<MyObject>>(){}.getType(); MyObjecs = mGson.fromJson(json,type); */ //使用okhttp如果出错了有可能版本和其他的版本出错 } }
配置
compile 'com.squareup.okhttp3:okhttp:3.3.1' compile 'com.google.code.gson:gson:2.6.2'
参考博客
张鸿洋的博客
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories