在第一篇中簡單介紹了OkHttp的get請求發送,今天簡單說下post請求發送json到服務器。
Android老版本網絡請求:
HttpUrlConnection
Apache Http Client
Android6.0版本網絡請求:
HttpUrlConnection
OkHttp
新版本廢棄了老的網絡請求,那么它的優勢是什么呢?
1,支持SPDY,共享同一個Socket來處理同一個服務器的所有請求
2,如果SPDY不可用,則通過連接池來減少請求延時
3,無縫的支持GZIP來減少數據流量
4,緩存響應數據來減少重復的網絡請求
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
public static final MediaType JSON=MediaType.parse("application/json; charset=utf-8");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//開啟一個線程,做聯網操作
new Thread() {
@Override
public void run() {
postJson();
}
}.start();
}
private void postJson() {
//申明給服務端傳遞一個json串
//創建一個OkHttpClient對象
OkHttpClient okHttpClient = new OkHttpClient();
//創建一個RequestBody(參數1:數據類型 參數2傳遞的json串)
RequestBody requestBody = RequestBody.create(JSON, json);
//創建一個請求對象
Request request = new Request.Builder()
.url("http://192.168.0.102:8080/TestProject/JsonServlet")
.post(requestBody)
.build();
//發送請求獲取響應
try {
Response response=okHttpClient.newCall(request).execute();
//判斷請求是否成功
if(response.isSuccessful()){\
//打印服務端返回結果
Log.i(TAG,response.body().string());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
SPDY(讀作“SPeeDY”)是Google開發的基于TCP的應用層協議,用以最小化網絡延遲,提升網絡速度,優化用戶的網絡使用體驗。SPDY并不是一種用于替代HTTP的協議,而是對HTTP協議的增強。新協議的功能包括數據流的多路復用、請求優先級以及HTTP報頭壓縮。谷歌表示,引入SPDY協議后,在實驗室測試中頁面加載速度比原先快64%。
ZIP最早由Jean-loup Gailly和Mark Adler創建,用于UNⅨ系統的文件壓縮。我們在Linux中經常會用到后綴為.gz的文件,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。
HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。這一般是指WWW服務器中安裝的一個功能,當有人來訪問這個服務器中的網站時,服務器中的這個功能就將網頁內容壓縮后傳輸到來訪的電腦瀏覽器中顯示出來.一般對純文本內容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點擊網址后會很快的顯示出來.當然這也會增加服務器的負載. 一般服務器中都安裝有這個功能模塊的。