okHttp的请求方式get、post的RequestBody、FormBody、MultipartBody

本文共有1886个字,关键词:Android

问题: okhttp的post传递参数如何写?

方法:

Post请示,传递json格式数据

public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
     RequestBody body = RequestBody.create(JSON, json);
      Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
//同步
      Response response = client.newCall(request).execute();
    f (response.isSuccessful()) {
        return response.body().string();
    } else {
        throw new IOException("Unexpected code " + response);
    }
}

Post请示,传递formdata格式数据

private void fetchDataByPost() {
     //把参数传进Map中
        HashMap<String,String> paramsMap=new HashMap<>();
        paramsMap.put("name","哈哈");
        paramsMap.put("client","Android");
        paramsMap.put("id","3243598");
        FormBody.Builder builder = new FormBody.Builder();
        for (String key : paramsMap.keySet()) {
            //追加表单信息
            builder.add(key, paramsMap.get(key));
        }
   OkHttpClient okHttpClient=new OkHttpClient();
        RequestBody formBody=builder.build();
      Request request=new   Request.Builder().url(netUrl).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 {  
            }
        });
}

参考:

https://www.jianshu.com/p/1133389c1f75
版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。
添加新评论
暂无评论