OkHttp是現在當下比較流行的一個網絡加載框架,可以使你在更加節約帶寬的前提下高效的完成數據和媒體的傳輸
OKHttp是一款高效的HTTP客戶端,支持連接同一地址的鏈接共享同一個socket,通過連接池來減小響應延遲,還有透明的GZIP壓縮,請求緩存等優勢
我們直接看使用吧 >>>>>
注意異步訪問網絡的回調方法並不是在主線程中執行(前提:Android會讓你新開線程去網絡操作),回調接口的方法不是在主線程 回調方法不能操作界面 想要操作界面還是得handler
//先實例化一個OkHttpClient
OkHttpClient client = new OkHttpClient();
//創建一個請求 對請求進行 各種設置
Request request = new Request.Builder()
.url("url") //請求的地址
.build();
//同步執行
Response response = client.newCall(request).execute();
//異步執行 在回調函數中拿到響應數據
//注意回調方法並不是在主線程中執行(Android會讓你新開線程去網絡操作)
//回調接口的方法不是在主線程 回調方法不能操作界面 想要操作界面還是得handler
client.newCall(request).enqueue(new Callback() {
public void onFailure(Request request, IOException e) {}
public void onResponse(Response response) throws IOException{}
});
//打印響應信息體信息
System.out.println("rs:" + response.body().toString());
//post提交 鍵值對
RequestBody formBody = new FormEncodingBuilder()
.add("name", "tp")
.add("pass", "tp")
.add("info", "reewsf")
.build();
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
/***************************************************/
//post請求 提交json數據到服務器
//定義Post請求體的類型
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url("xxx")
.post(body) //將請求信息體附帶上
.build();
//同步執行
Response response = client.newCall(request).execute();
介紹幾個常用的
Response的 isSuccessful >>判斷是否成功的
Response.body().string(); >>將響應信息作爲String類型返回
//Post方式提交文件
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("text/x-markdown; charset=utf-8");
File file = new File("README.md");
Request request = new Request.Builder()
.url("https://api.github.com/markdown/raw")
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file)) //創建一個文件請求體
.build();
Response response = client.newCall(request).execute(); //執行
//拋出異常提示
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
/*使用Gson來解析JSON響應Gson是一個在JSON和Java對象之間轉換非常方便的api。這裏我們用Gson來解析JSON響應。
注意:ResponseBody.charStream()使用響應頭Content-Type指定的字符集來解析響應體。默認是UTF-8。*/
//創建一個Gson實例
private final Gson gson = new Gson();
//創建請求
Request request = new Request.Builder()
.url("xxxxx")
.build();
//執行請求
Response response = client.newCall(request).execute();
//拋出自定義的異常
if(!response.isSuccessful())throw new IOException("error" + response);
//將響應信息 轉換成對應的實體類
User user= gson.fromJson(response.body().charStream(), User .class);
}
class User {
//...
}