415 | Unsupported Media Type | 服務器無法處理請求附帶的媒體格式 |
乍看之下,當時并沒有看出來是什么意思,后來通過度娘搜索了下,覺得應該是跟發送HTTP報文的請求頭中的Content-Type有關。于是,我嘗試了下,在Eclipse中的Java代碼中,在發送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(); MapString,String> headers = new HashMapString,String>(); headers.put("Content-Type", "application/json; charset=utf-8"); UrlConnectionHelper.post(url, sendData, "UTF-8", 8000, headers, resultBuilder); System.out.println(resultBuilder.toString()); } }
通過執行測試,發現問題真的解決了。但是為什么我在HttpRequester中沒有自己設置頭字段卻可以正常拿到返回報文,為了解決這個疑問,我決定對HttpRequester發送出去的報文進行抓包分析,下面是抓包的結果。
這時候才發現原來根本原因在這呢,應該是HttpRequester在發送請求的時候幫我們自己去做了一些處理,如果發送的是json數據自動幫我們加上了Content-Type字段的聲明,從而能夠正常返回結果。而在Java代碼發送的時候,通過抓包我們發現是沒有這個頭字段的(當然沒有,因為我們壓根沒有給他設置這個頭字段)。
至此,關于這個問題算是解決了,但是回過頭來想,415又是什么意思呢?
個人覺得應該是我們嘗試發送的數據是一定數據格式的,比如json,比如xml等等,這時候需要告訴處理方我們發送的是什么樣的數據,如果沒有告訴的話接收方可能就直接拒識了,這時候我們只要根據實際情況給數據接收方提供發送報文的數據格式應該就可以了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。