OkHttp post实例

来源:互联网 发布:vue.js 动态添加div 编辑:程序博客网 时间:2024/04/28 04:57

            最近一直在用OKHttp,现在就上实例简单介绍一下。


概述:      

 OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还有透明的GZIP压缩,请求缓存等优势。

OKHttp网站:https://github.com/square/okhttp


Jar引入:

可以通过下载jar包导入或者通过构建的方式导入

compile 'com.squareup.okhttp3:okhttp:3.4.1'



       

这样studio就会自动去下载或者构建。


用法

向网络发起请求的时候,最常用的就是GET和POST,下面以POST为例 

POST一般需要传入参数,甚至一些header,传入参数或者header 
比如传入header 

Request request = new Request.Builder() .url("https://api.github.com/repos/square/okhttp/issues") .header("User-Agent", "OkHttp Headers.java") .addHeader("Accept", "application/json; q=0.5") .addHeader("Accept", "application/vnd.github.v3+json") .build(); 
传入POST参数

RequestBody formBody = new FormEncodingBuilder()    .add("platform", "android")    .add("name", "bug")    .add("subject", "参数")    .build();    Request request = new Request.Builder()      .url(url)      .post(body)      .build();
Response response = client.newCall(request).execute();    if (response.isSuccessful()) {        return response.body().string();    } else {        throw new IOException("Unexpected code " + response);    }

   下面POST实例:

在MainActivity中

public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    String path="http://japi.juhe.cn/tv/getCategory";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        new  Thread(new Runnable() {            @Override            public void run() {                OkHttpClient okHttpClient = new OkHttpClient();                FormBody body = new FormBody.Builder()                        .add("key", "32d6fd626e96bc714744a2fc43aae475")                        .build();                Request request = new Request.Builder()                        .url(path)                        .post(body)                        .build();                Call call = okHttpClient.newCall(request);                try {                    Response response = call.execute();                    if (response.code()==200)                    {                        Log.e(TAG, "onCreate: "+"成功了");                        byte[] bytes = response.body().bytes();                        String s = new String(bytes);                        Log.e(TAG, "onCreate: "+s );                        //解析数据                        JSONObject jo=new JSONObject(s);                        JSONArray result = jo.getJSONArray("result");                        ArrayList<String> lists=new ArrayList<String>();                        for (int i=0;i<result.length();i++){                            JSONObject jo1= (JSONObject) result.get(i);                            String name = jo1.getString("name");                            lists.add(name);                        }                        Log.e(TAG, "onCreate: "+ lists.size() );                    }                } catch (IOException e) {                    e.printStackTrace();                } catch (JSONException e) {                    e.printStackTrace();                }            }        }).start();    }}

在XML文件中:

<ImageView        android:id="@+id/iv"        android:layout_centerInParent="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         />

在清单文件中:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>



1 0
原创粉丝点击