解決retrofit2.adapter.rxjava.HttpException: HTTP 400 錯誤
前言
??最近項目中遇到一件怪事,在get請求中發(fā)現(xiàn)沒有數(shù)據(jù),在debug時候發(fā)現(xiàn)居然爆了一個retrofit2.adapter.rxjava.HttpException: HTTP 400錯誤。經(jīng)過查閱資料發(fā)現(xiàn)400 請求出錯
??由于語法格式有誤苫亦,服務(wù)器無法理解此請求酒甸。不作修改,客戶程序就無法重復(fù)此請求妄荔。但是我把請求的完整參數(shù)發(fā)到postman中請求發(fā)現(xiàn)沒有問題。正在覺得怪異的時候谍肤,請求參數(shù)中|這個特殊字符串引起了我的注意啦租。
通過在OKhttp 攔截器中打印出本次請求路徑發(fā)現(xiàn),所有的參數(shù)都是被編碼了荒揣,但是|這個特殊字符卻沒有編碼篷角。
String path = "";
try {
LogUtils.error("path" + departmentBean.getPath());
path = new String(departmentBean.getPath().getBytes(), "utf-8");
path = URLEncoder.encode(path, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
通過對路徑參數(shù)也就是包含 | 特殊字符的參數(shù)進(jìn)行編碼過后問題就解決了。