OkHttp的get、Post

由于没有看过书籍,不能将理论正确的描述出来,只能根据自己的理解,带大家认识下java开发下的OkHttp的get和post两种请求方式。

依赖的包为:okio-1.15.0.jar+okhttp-3.11.0.jar

如果出现NoSuchMethod情况可能是两个包产生了冲突,也可能是因为包里本身就不包含那个方法,最开始我用的okio-1.9.0.jar的包出现了该问题,查看是存在该方法,于是更换成更新的okio-1.15.0.jar,解决了冲突问题。

方法okHttpGet()里面说明了OkHttp的get请求方式,其中 new Request.Builder().url(url).build();可以换成new Request.Builder().get().url(url).build()。

方法okHttpPost()说明了post请求方式,主要需要传入参数,方式有很多种可以是JSON、Map,这里采用了最简单传参。

package http;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttpTest {
    public static void main(String args[]) {
        OkHttpTest otget = new OkHttpTest();
        String url1 = "http://baidu.com";
        String url = "http://122.222.222.222:9004/http/sms";
        otget.okHttpGet(url1);
        otget.okHttpPost(url);
    }

    private void okHttpGet(String url) {
        // 首先需要创建一个OkHttpClient对象用于Http请求, 可以改成全局型
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        // 创建一个request对象
        Request request = new Request.Builder().url(url).build();
        // 执行和回调
        client.newCall(request).enqueue(new Callback() {
            public void onFailure(Call call, IOException e) {

            }

            public void onResponse(Call call, Response response)
                    throws IOException {
                String str = response.body().string();
                System.out.println("OkHttp的get()请求方式" + str);
            }
        });

    }

    /*
     * post请求 get不一样的地方就是传参数不一样,post请求需要把参数封装到RequestBody对象,
     * 调用Request对象的post方法把RequestBody传入进去
     */
    private void okHttpPost(String url) {
        OkHttpClient okHttpClient = new OkHttpClient();
        FormBody.Builder formBuilder = new FormBody.Builder();
        formBuilder.add("name", "test1");// 请求参数一
        formBuilder.add("pass", "test2");// 请求参数二
        formBuilder.add("mobiles", "XXX2XXXXXXX");// 请求参数三
        formBuilder.add("content", "OkHttp的post()请求方式.测试测试");// 请求参数四
        RequestBody requestBody = formBuilder.build();
        Request request = new Request.Builder().post(requestBody).url(url)
                .post(requestBody).build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            String result = response.body().string();
            System.out.println("OkHttp的post()请求方式" + result);
            response.body().close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

一步一步提升自己,只有静下来好好分析才可以理解,当有其他思想时,自己是怎么都进不到里面去的,我就是这样,突然想说只要用心,我们就会有收获。

 

posted on 2018-08-06 16:20  知不可见  阅读(5321)  评论(0编辑  收藏  举报