OkHttp post实例

            最近一直在用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 OkHttp3 发送包含 JSON 数据的 POST 请求,可以按照以下步骤操作: 1. 创建一个 `OkHttpClient` 实例。 2. 创建一个 `RequestBody` 对象,它包含 JSON 数据。 3. 创建一个 `Request` 对象,它包含请求方法(POST)、URL 和 `RequestBody` 对象。 4. 使用 `OkHttpClient` 实例创建一个 `Call` 对象。 5. 调用 `Call` 对象的 `execute()` 方法或 `enqueue()` 方法发送请求。 下面是一个示例代码: ```java OkHttpClient client = new OkHttpClient(); // JSON 数据 String json = "{\"name\":\"John\", \"age\":30}"; // 创建 RequestBody 对象 RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), json); // 创建 Request 对象 Request request = new Request.Builder() .url("https://www.example.com/api/user") .post(requestBody) .build(); // 创建 Call 对象 Call call = client.newCall(request); // 发送请求并处理响应 Response response = call.execute(); String responseData = response.body().string(); ``` 在上面的代码中,我们首先创建了一个 `OkHttpClient` 实例。然后,我们创建了一个包含 JSON 数据的 `RequestBody` 对象,使用 `MediaType.parse()` 方法指定了请求数据的 MIME 类型为 `application/json`。 接下来,我们创建了一个 `Request` 对象,它包含了请求的 URL、请求方法和请求数据。注意,我们使用 `post()` 方法指定了请求方法为 POST,并将 `RequestBody` 对象传递给了该方法。 最后,我们使用 `OkHttpClient` 实例创建了一个 `Call` 对象,并调用了其 `execute()` 方法发送请求。如果请求成功,我们可以通过 `Response` 对象获取响应数据。在上面的代码中,我们使用 `string()` 方法将响应数据转换为字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值