背景

最近弄的项目中要求给另外一个服务器传送数据,预定是用http的方式,在开始动手之前我打算用Spring Boot模拟下服务器之间的请求

流程:  服务器A发起POST请求将Json格式的数据发送到服务器B,服务器B要回传"success",当服务器A接收到"success"后表示数据发送成功

@Controller
public class MyController {/***  服务器A*/@ResponseBody@RequestMapping(value = "/send", method = RequestMethod.GET)public String function8(){String sendMsg = (new User("1","12","123")).toString();String data = "this is null string";String url = "http://localhost:8080/receive";try {data = HttpHelper.ShareHelper().Post(url, sendMsg, "UTF-8", null,new HttpHelperRequestHandler() {@Overridepublic void OnPreSend(URLConnection request) {request.addRequestProperty("Content-type", "application/json");}});} catch (Exception e) {e.printStackTrace();}finally {if(!("success".equals(data))){System.out.println("服务器A:"+"发送通知失败");}else{System.out.println("服务器A:"+"发送通知成功");}}return "xixi";}/***  服务器B*/@ResponseBody@RequestMapping("/receive")public String hello111(@RequestBody String user){System.out.println("服务器B:"+"接收成功,接收的到数据:");return "success";}}

点击运行之后,和预期显示的一样

偶然间,我发现如果服务器B不用注解@ResponseBody的话,服务器B仍然能接收到数据,但是服务器A这边会报500错误

 (自己打印的)

@ResponseBody的作用是将返回的数据变成Json格式

也就是说在服务器A这边原本要用data接收Json格式的"success",但是服务器B却返回了一个 Object 过来,因此导致出现500错误码

解决:

如果不用注解 @ResponseBody的话,就给服务器B这边的response设置ContentType为application/json,然后通过输出流来回写"success"

@Controller
public class MyController {/***  服务器A*/@ResponseBody@RequestMapping(value = "/send", method = RequestMethod.GET)public String function8(){String sendMsg = (new User("1","12","123")).toString();String data = "this is null string";String url = "http://localhost:8080/receive";try {data = HttpHelper.ShareHelper().Post(url, sendMsg, "UTF-8", null,new HttpHelperRequestHandler() {@Overridepublic void OnPreSend(URLConnection request) {request.addRequestProperty("Content-type", "application/json");}});} catch (Exception e) {e.printStackTrace();}finally {if(!("success".equals(data))){System.out.println("服务器A:"+"发送通知失败"+data);}else{System.out.println("服务器A:"+"发送通知成功"+data);}}return "xixi";}/***  服务器B*/@RequestMapping("/receive")public void hello11(@RequestBody String user,HttpServletResponse response){System.out.println("服务器B:"+"接收成功,接收的到数据:"+user);response.setContentType("application/json");try{PrintWriter write = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));write.print("success");write.flush();}catch(Exception e){}}}

运行之后

总结

出现500错误,一般是接收方那边程序报错,具体问题还要接收方那边反应,可能是没有正确处理好数据的接收或者数据的回写,其主要是对数据格式的检查。

【http 请求返回状态码 500 】 Spring Boot 模拟http请求相关推荐

  1. HTTP请求返回状态码意义(详)

    所有HTTP请求返回状态码意义 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求切换协议.只能切换到更高级的协议,例 ...

  2. ajax返回状态码为零,ajax - HTTP请求返回状态码0时的含义是什么?

    ajax - HTTP请求返回状态码0时的含义是什么? JavaScript网络调用(例如fetch或XMLHttpRequest)或任何其他类型的HTTP网络请求在HTTP状态代码为0时失败意味着什 ...

  3. CEF3:https 请求返回状态码canceled

    CEF3:https 请求返回状态码canceled 客户端项目中浏览器内核用的cef3,最近在测试的时候 服务器配置的为https但是使用IP访问的.像如果 https服务器并没有完全安装正规的配置 ...

  4. 查看HTTP请求返回状态码对照表详解

    状态码 描述 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议 200 OK 指示 ...

  5. python-网页请求返回状态码429

    在做读取本地cookies免登陆直接留言时,代码没有报错,但返回状态码为429,返回结果为:<Response [429]> 表示在短时间内,用户发送了太多的请求,超出了"频次限 ...

  6. 转载 TP6已开启报错,接口返回状态码500,无对应报错信息

    本文内容转载于解决thinkphp6(tp6)在状态码500下不报错,或者显示错误"Malformed UTF-8 characters"的问题 非常规步骤: 根据路径找到文件:& ...

  7. HTTP网络请求返回状态码

    HTTP状态码表示客户端HTTP请求的返回结果.标记服务器端的处理是否正常或者是出现的错误,能够根据返回的状态码判断请求是否得到正确的处理很重要. 平时在开发的时候,也能通过查看此状态码更快的获取的错 ...

  8. HTTP请求返回状态码

    消息:代表请求已被接收,需要继续处理.临时响应. 100 Continue 告知客户部分响应已被服务器接收,客户端应继续发送请求. 成功:服务器已经接收理解并接受请求. 200 (OK) 请求成功,返 ...

  9. ajax请求返回状态码

    1开头的http状态码 表示临时响应并需要请求者继续执行操作的状态代码. 100   (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分.   101   ...

最新文章

  1. 安防行业巨头都是如何布局无人机的?
  2. 观点:BCH的SLP-token正进入爆发期,未来或成为BCH最大应用场景
  3. 关于cocos2d-x 和安卓之间的相互调用
  4. 如何在Bash中加入数组元素?
  5. 【springboot】之 解析@EnableWebMvc 、WebMvcConfigurationSupport和WebMvcConfigurationAdapter
  6. android webview 水平滚动,Android WebView不可滚动
  7. tomcat+路由器+oray
  8. 机器学习—线性回归推广及案例
  9. java fso_asp之FSO大全
  10. ffmpeg ACC音频播放
  11. 量化交易 交易流程与框架
  12. OpenGL ES API(绑定shader)
  13. 路由器下一跳地址怎么判断_三分钟了解路由器路由表
  14. matlab人口增长线性回归拟合_科学网—matlab线性拟合 - 张瑞龙的博文
  15. PHP与MySQL交互实现网页登录注册功能(步骤超详细!!!)
  16. conda install报错 ValueError: check_hostname requires server_hostname
  17. 获取网页链接里的视频原件
  18. 文件加解密,AIDE入侵检测,扫描与抓包
  19. 两个用于谷歌输入法的颜文字拓展
  20. win10笔记本:掉帧卡顿、开机后卡顿、玩游戏帧数低、GPU占用率上不去,解决办法

热门文章

  1. 图论算法(5):图的广度优先遍历 BFS
  2. Firebug调试器介绍
  3. osg3.0--节点(Geode)
  4. 用计算机得英语造句,外语造句 - 用外语造句大全(10-500个例子) - 第 3 页
  5. 基于关系图的实体关系联合抽取
  6. mysql数据库如何克隆好友怎么弄_怎么把mysql一个数据库从一台机器上 拷贝到另外一台...
  7. maven项目中处理tomcat启动不成功的解决方法
  8. Tkinter小结 界面+快捷键设置
  9. 1邵婷 课件《植树问题(两端都种)》获奖证书
  10. Vue.js提炼与升华