HTTP请求返回415错误码定位解决⽅法
今天在⼯作中,发现我再调⽤外部API接⼝的时候,发现⼀个奇怪的问题,就是我Eclip中写代码调⽤外部API接⼝时返回HTTP状态码是415,但是我将相同的报⽂放在HttpRequester⾥⾯请求的时候却⼜可以拿到正常返回结果,⽽不是415错误。隔夜饭菜
不知道有没有⼈跟我⼀样遇到过这个问题,这⾥记录⼀下解决办法。
⾸先我们还是看下HTTP的状态码关于415返回码的说明吧。
415Unsupported Media Type服务器⽆法处理请求附带的媒体格式
乍看之下,当时并没有看出来是什么意思,后来通过度娘搜索了下,觉得应该是跟发送HTTP报⽂的请求头中的Content-Type 有关。于是,我尝试了下,在Eclip中的Java代码中,在发送Http请求时带上了相应的头字段,如下所⽰:
public class Test {
public static void main(String[] args) throws IOException {
霸王别姬剧本>别价
String url = "ip:port/cip-cas/arch";
String ndData = "{\"appId\":\"***\",\"contentName\":\"⼈民的名义\",\"equipmentId\":\"***\",\"requestSeq\":\"***\",\"requestType\":\"1\",\"urId\":\"***\"}"; StringBuilder resultBuilder = new StringBuilder();草菇汤
Map<String,String> headers = new HashMap<String,String>();
中性皮肤的特征是什么headers.put("Content-Type", "application/json; chart=utf-8");
UrlConnectionHelper.post(url, ndData, "UTF-8", 8000, headers, resultBuilder);
System.out.String());
入伍条件}
}
通过执⾏测试,发现问题真的解决了。但是为什么我在HttpRequester中没有⾃⼰设置头字段却可以正常拿到返回报⽂,为了解决这个疑问,我决定对HttpRequester发送出去的报⽂进⾏抓包分析,下⾯是抓包的结果。
我是少年阿凡提
闪充
这时候才发现原来根本原因在这呢,应该是HttpRequester在发送请求的时候帮我们⾃⼰去做了⼀些处理,如果发送的是json 数据⾃动帮我们加上了Content-Type字段的声明,从⽽能够正常返回结果。⽽在Java代码发送的时候,通过抓包我们发现是没有这个头字段的(当然没有,因为我们压根没有给他设置这个头字段)。
⾄此,关于这个问题算是解决了,但是回过头来想,415⼜是什么意思呢?
个⼈觉得应该是我们尝试发送的数据是⼀定数据格式的,⽐如json,⽐如xml等等,这时候需要告诉处理⽅我们发送的是什么样的数据,如果没有告诉的话接收⽅可能就直接拒识了,这时候我们只要根据实际情况给数据接收⽅提供发送报⽂的数据格式应该就可以了。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。