OkHttp框架的一個Http500問題解決
一、問題描述:
使用OKHttp框架進行網路請求,測試線採用http,正式線採用https,測試線請求200通過,但是正式線卻發生500異常。
二、解決方法:
1、首先定位在https請求的問題
2、通常http500的問題定位請求頭的問題
3、檢查程式碼,發現OkHttp配置程式碼中並沒有配置請求頭
4、用fiddler抓包,檢視header,發現唯一不同的是User-Agent
5、採用https請求的時候OKHttp會配置一個預設的User-Agent[okhttp/3.9.0]
[21/Aug/2018:14:32:16 +0800] "POST /index/index HTTP/1.1" 500 186 "-" "okhttp/3.9.0"
6、替換正確的User-Agent,測試通過。
RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded; charset=UTF-8"), sb.toString());
request = request.newBuilder().post(body).removeHeader("User-Agent").addHeader("User-Agent",getUserAgent()).build();
[21/Aug/2018:14:40:13 +0800] "POST /index/getVersionInfo HTTP/1.1" 200 32 "-" "Dalvik/1.6.0 (Linux; U; Android 4.3; Lenovo A890e Build/JLS36C)"
private static String getUserAgent () {
String userAgent = "";
StringBuffer sb = new StringBuffer();
userAgent = System.getProperty("http.agent");//Dalvik/2.1.0 (Linux; U; Android 6.0.1; vivo X9L Build/MMB29M)
for (int i = 0, length = userAgent.length(); i < length; i++) {
char c = userAgent.charAt(i);
if (c <= '\u001f' || c >= '\u007f') {
sb.append(String.format("\\u%04x", (int) c)); } else { sb.append(c); }
}
LogUtils.tag("xxx").e("User-Agent","User-Agent: "+ sb.toString());
return sb.toString();
}
相關文章
- 一個小問題的解決方案
- 解決了一個PC的問題
- chrome appcache一個問題的解決ChromeAPPPCA
- 關於 OkHttp 依賴衝突問題的解決過程HTTP
- 一個lua問題解決過程
- 一個關於/root/.gvfs的問題解決?
- lvs 負載均衡遇到的一個問題. (問題解決)負載
- 終於,解決了一個大問題
- 今天解決的兩個問題
- 一個使用SQL語句解決的小問題SQL
- banq,你好,我有一個急需解決的問題??
- 解決一個.NET聯接SQL的問題 (轉)SQL
- 高手都進來歇歇~解決一個問題關於SE的問題
- 一個案例,教你巧用DMAIC解決“大問題”!AI
- 對抗式協作:一個框架解決多個無監督學習視覺問題框架視覺
- 遊戲,一個有樂趣的、解決問題的過程遊戲
- 一個解決VC++程式國際化的類,解決亂碼問題C++
- 解決「問題」,不要解決問題
- 用Python解決一個等差數列的求和問題Python
- 一個簡單的統計問題(解決方案:Trie樹)
- 關於一個網友最佳化問題的解決
- 一個關於JS解決陣列相乘問題JS陣列
- Josephus問題解決方法一
- 關於解決問題的幾個段位
- 您好, 第一章的一個問題, 清幫忙解決.
- 最近解決了一個比較複雜的“死鎖”問題
- 100多次競賽後,他研發了一個幾乎可以解決所有機器學習問題的框架機器學習框架
- 更新了java 8 之後一個小問題解決Java
- 各位大哥,幫忙解決一下這個問題
- 解決機器學習問題的一般流程機器學習
- DRM引起的問題解決一例
- 解決mysql出現幾個l的問題MySql
- 解決問題的8個步驟-轉載
- TSM故障問題解決一則
- 最近解決的幾個DIV+CSS的問題CSS
- python bottle框架 解決跨域問題的正確方式Python框架跨域
- 請問一下這個問題怎麼解決,這是剛開始搭建的介面自動化測試框架框架
- 解決IIS5 HTTP500內部錯誤 (轉)HTTP