遇到問題
1. java.io.IOException: unexpected end of stream on Connection
問題: 服務(wù)器端,關(guān)閉了連接。
解決辦法:a) 在Http請(qǐng)求頭增加參數(shù):addHeader("Connection", "close")
在http1.1中request和reponse header中都有可能出現(xiàn)一個(gè)connection頭字段,此header的含義是當(dāng)client和server通信時(shí)對(duì)于長(zhǎng)鏈接如何進(jìn)行處理。
在http1.1中,client和server都是默認(rèn)對(duì)方支持長(zhǎng)鏈接的, 如果client使用http1.1協(xié)議,但又不希望使用長(zhǎng)鏈接,則需要在header中指明connection的值為close;如果server方也不想支持長(zhǎng)鏈接,則在response中也需要明確說明connection的值為close.
不論request還是response的header中包含了值為close的connection,都表明當(dāng)前正在使用的tcp鏈接在請(qǐng)求處理完畢后會(huì)被斷掉。以后client再進(jìn)行新的請(qǐng)求時(shí)就必須創(chuàng)建新的tcp鏈接了。 HTTP Connection的 close設(shè)置允許客戶端或服務(wù)器中任何一方關(guān)閉底層的連接雙方都會(huì)要求在處理請(qǐng)求后關(guān)閉它們的TCP連接。
b ) 連接設(shè)置:?urlConnect.setRequestProperty("Connection", "close");
以上兩個(gè)都建議在13以上加。
if (Build.VERSION.SDK !=null && Build.VERSION.SDK_INT >13) { request.addHeader("Connection","close");}