java - http请求返回200,对方服务器一定是收到请求了吗?

 丨为你 发布于 2022-10-26 03:23

Http请求,用response.getStatusLine().getStatusCode()判断返回值为200,是不是说明对方一定收到请求了?对方是IIS服务器,我的方法已经正确返回200,日志有打印,对方却一直咬定没有收到,我没有接触过IIS服务器,除了这个人以外,别的都没有问题!并且根据对方所说,并不是一直存在类似问题,一天会出现几次,抓包都不好抓!所以想请有遇到过类似问题或有经验丰富的开发帮助分析一下!

4 个回答
  • 首先,要先弄明白什么是 HTTP 200 :

    2xx成功

    200 OK

    请求已成功,请求所希望的响应头或数据体将随此响应返回。

    201 Created

    请求已经被实现,而且有一个新的资源已经依据请求的需要而创建,且其URI已经随Location头信息返回。假如需要的资源无法及时创建的话,应当返回'202 Accepted'。

    202 Accepted

    服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。
    返回202状态码的响应的目的是允许服务器接受其他过程的请求(例如某个每天只执行一次的基于批处理的操作),而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。

    203 Non-Authoritative Information

    服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。例如,包含资源的元数据可能导致原始服务器知道元信息的超集。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。

    其次,你收到200的请求,仅代表服务成功收到,不代表对方的业务代码是否能收到。一般的公司会有防火墙服务,分发服务等网络层,还有的会有业务网关层。

    最后,还有检查一下通讯的数据格式。

    2022-10-27 00:36 回答
  • 有可能是对方以http 200返回了错误,所以你这里看返回状态码没问题但是对方服务器其实出错了

    2022-10-27 00:36 回答
  • 如果没有被劫持,在确保你代码没有写错的情况下。那么就

    2022-10-27 00:37 回答
  • 如果服务端返回200,可以确实服务器成功接收到了客户端请求。你这种情况的话,你可以把服务端返回的报文全部记录到log里,包括报文头信息和报文体信息以及通讯时间。当在此出现这种问题时,根据出现时间找到那条报文,然后拿这条报文与其他报文比较下,看有什么异常没

    2022-10-27 00:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有