欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HTTP請求返回415錯誤碼定位解決方法

 更新時間:2019年12月02日 14:30:09   作者:DreamMakers  
這篇文章主要介紹了HTTP請求返回415錯誤碼定位解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

今天在工作中,發(fā)現(xiàn)我再調用外部API接口的時候,發(fā)現(xiàn)一個奇怪的問題,就是我Eclipse中寫代碼調用外部API接口時返回HTTP狀態(tài)碼是415,但是我將相同的報文放在HttpRequester里面請求的時候卻又可以拿到正常返回結果,而不是415錯誤。

不知道有沒有人跟我一樣遇到過這個問題,這里記錄一下解決辦法。

首先我們還是看下HTTP的狀態(tài)碼關于415返回碼的說明吧。

415 Unsupported Media Type 服務器無法處理請求附帶的媒體格式

乍看之下,當時并沒有看出來是什么意思,后來通過度娘搜索了下,覺得應該是跟發(fā)送HTTP報文的請求頭中的Content-Type有關。于是,我嘗試了下,在Eclipse中的Java代碼中,在發(fā)送Http請求時帶上了相應的頭字段,如下所示:

public class Test {
 public static void main(String[] args) throws IOException {
 String url = "http://ip:port/cip-cas/search";
 String sendData = "{\"appId\":\"***\",\"contentName\":\"人民的名義\",\"equipmentId\":\"***\",\"requestSeq\":\"***\",\"requestType\":\"1\",\"userId\":\"***\"}";
 StringBuilder resultBuilder = new StringBuilder();
 Map<String,String> headers = new HashMap<String,String>();
 headers.put("Content-Type", "application/json; charset=utf-8");
 UrlConnectionHelper.post(url, sendData, "UTF-8", 8000, headers, resultBuilder);
 System.out.println(resultBuilder.toString());
 }
}

通過執(zhí)行測試,發(fā)現(xiàn)問題真的解決了。但是為什么我在HttpRequester中沒有自己設置頭字段卻可以正常拿到返回報文,為了解決這個疑問,我決定對HttpRequester發(fā)送出去的報文進行抓包分析,下面是抓包的結果。

這時候才發(fā)現(xiàn)原來根本原因在這呢,應該是HttpRequester在發(fā)送請求的時候幫我們自己去做了一些處理,如果發(fā)送的是json數(shù)據(jù)自動幫我們加上了Content-Type字段的聲明,從而能夠正常返回結果。而在Java代碼發(fā)送的時候,通過抓包我們發(fā)現(xiàn)是沒有這個頭字段的(當然沒有,因為我們壓根沒有給他設置這個頭字段)。

至此,關于這個問題算是解決了,但是回過頭來想,415又是什么意思呢?

個人覺得應該是我們嘗試發(fā)送的數(shù)據(jù)是一定數(shù)據(jù)格式的,比如json,比如xml等等,這時候需要告訴處理方我們發(fā)送的是什么樣的數(shù)據(jù),如果沒有告訴的話接收方可能就直接拒識了,這時候我們只要根據(jù)實際情況給數(shù)據(jù)接收方提供發(fā)送報文的數(shù)據(jù)格式應該就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論