HTTP请求返回415错误码定位解决

HTTP请求返回415错误码定位解决今天在工作中,发现我再调用外部API接口的时候,发现一个奇怪的问题,就是我Eclipse中写代码调用外部API接口时返回HTTP状态码是415,但是我将相同的报文放在HttpRequester里面请求的时候却又可以拿到正常返回结果,而不是415错误。不知道有没有人跟我一样遇到过这个问题,这里记录一下解决办法。首先我们还是看下HTTP的状态码关于415返回码的说明吧。41

大家好,又见面了,我是你们的朋友全栈君。

今天在工作中,发现我再调用外部API接口的时候,发现一个奇怪的问题,就是我Eclipse中写代码调用外部API接口时返回HTTP状态码是415,但是我将相同的报文放在HttpRequester里面请求的时候却又可以拿到正常返回结果,而不是415错误。

不知道有没有人跟我一样遇到过这个问题,这里记录一下解决办法。

首先我们还是看下HTTP的状态码关于415返回码的说明吧。

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(); 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()); } }

通过执行测试,发现问题真的解决了。但是为什么我在HttpRequester中没有自己设置头字段却可以正常拿到返回报文,为了解决这个疑问,我决定对HttpRequester发送出去的报文进行抓包分析,下面是抓包的结果。

HTTP请求返回415错误码定位解决

这时候才发现原来根本原因在这呢,应该是HttpRequester在发送请求的时候帮我们自己去做了一些处理,如果发送的是json数据自动帮我们加上了Content-Type字段的声明,从而能够正常返回结果。而在Java代码发送的时候,通过抓包我们发现是没有这个头字段的(当然没有,因为我们压根没有给他设置这个头字段)。

至此,关于这个问题算是解决了,但是回过头来想,415又是什么意思呢?

个人觉得应该是我们尝试发送的数据是一定数据格式的,比如json,比如xml等等,这时候需要告诉处理方我们发送的是什么样的数据,如果没有告诉的话接收方可能就直接拒识了,这时候我们只要根据实际情况给数据接收方提供发送报文的数据格式应该就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130317.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows安装git cmd_git for windows

    windows安装git cmd_git for windowsGitLFS(GitLargeFileStorge,Git大文件储存)。本文只介绍windows下的安装方式。写在前面,GitLFS安装依赖Git,所以我们先安装git下载地址【传送门】双击安装,直接next1.安装地址【传送门】2.安装双击->默认->确定->安装完成运行cmd下输入gitlfsinstall一般命令gitlfsinstall开启LFS功能gitlfstrackl文件追踪,一般后面”文件名.后缀”gitlf

    2022年9月8日
  • dpkg命令

    dpkg命令dpkg命令如果ubuntu要安装新软件,已有deb安装包(例如:iptux.deb),但是无法登录到桌面环境。那该怎么安装?答案是:使用dpkg命令。dpkg命令常用格式如下:sudodpkg-Iiptux.deb#查看iptux.deb软件包的详细信息,包括软件名称、版本以及大小等(其中-I等价于–info)sudodpkg-ciptux.deb#查看iptux.

    2022年5月22日
  • Linux内核分析及内核编程[通俗易懂]

    Linux内核分析及内核编程[通俗易懂]倪继利著2005年8月出版ISBN7-121-01518-5900页88.00元(估价)倪 倪继利著2005年8月出版ISBN7-121-01518-5900页88.00元(估价)倪 内容简介  本书作者在整理自己多年研发笔记的基础上,以精心挑选的典型开发实例向读者详细地讲述了内核源代码的各部分结构、原理及组成框架,主要分析了Linux最新版本(2.6.11)的内核源代码,帮助读者深入

    2022年10月8日
  • 实战:springboot整合rabbitMQ「建议收藏」

    实战:springboot整合rabbitMQ「建议收藏」一、RabbitMQ简述与其docker安装这里主要讲解实战整合rabbitMQ,了解RabbitMQ简述与其docker安装请点击:传送门二、springboot整合rabbitMQ1.新建springboot项目2.pom:主要添加以下两个依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-

    2022年5月14日
  • WinSCP连接Ubuntu拒绝访问,SSH访问状态确认

    WinSCP连接Ubuntu拒绝访问,SSH访问状态确认WinSCP连接Ubuntu拒绝访问的问题

    2022年9月15日
  • 混合开发hybrid原理_混合开发是什么意思

    混合开发hybrid原理_混合开发是什么意思(一)开发移动三种模式(1)NativeApp:(原生APP)写App的同学,比如ios,安卓等(2)HybridApp:(混合开发),h5页面嵌入App中(3)WebApp:用手机浏览器打开h5页面(二)优缺点:(1)NativeApp:基本可以操作任何手机系统,比如(视频、扫码、获取通讯录、打电话)等(2)HybridApp:混合开发,如果想要h5操作手机系统,需要app同学配合前端,给前端提供相应的操作api前端也可以自己做混合开发,需要借助.

    2022年9月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号