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