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(); } } }
一步一步提升自己,只有靜下來好好分析才可以理解,當有其他思想時,自己是怎么都進不到里面去的,我就是這樣,突然想說只要用心,我們就會有收獲。