【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」

【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」背景最近弄的项目中要求给另外一个服务器传送数据,预定是用http的方式,在开始动手之前我打算用SpringBoot模拟下服务器之间的请求流程:服务器A发起POST请求将Json格式的数据发送到服务器B,服务器B要回传”success”,当服务器A接收到”success”后表示数据发送成功@ControllerpublicclassMyController{/***服务器A*/@ResponseBody@RequestMap.

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

背景

最近弄的项目中要求给另外一个服务器传送数据,预定是用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() {
                        @Override
                        public 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";
    }

}

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

【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」

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

【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」

【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」 (自己打印的)

 @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() {
                        @Override
                        public 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){

        }
    }

}

运行之后

【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」

 

总结 

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

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

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

(0)
上一篇 2022年6月20日 下午10:46
下一篇 2022年6月20日 下午11:00


相关推荐

  • Vue 绑定使用 touchstart touchmove touchend[通俗易懂]

    Vue 绑定使用 touchstart touchmove touchend[通俗易懂]Vue简单绑定touchstarttouchmovetouchend

    2022年6月19日
    96
  • 爸妈老了

    爸妈老了爸妈老了

    2022年4月23日
    44
  • Pycharm调试_pycharm打开远程项目

    Pycharm调试_pycharm打开远程项目1.前期准备保证有一台Linux(我用的是ubuntuserver1404),系统自带python以及python3环境;保证安装pycharm的设备可以ssh上去,这个就不多说了.推荐采用本机安装虚拟机,不要问为啥不直接使用本机的python,,,,因为调试时有些包在window上确实不好办,还有一点,Linux上做开发确实爽.2.配置pycharm2….

    2025年7月28日
    4
  • 自适应阈值法(图文总结)

    自适应阈值法(图文总结)概念 该方法网上很多很简洁但是很难懂的公式 本文章将会由简单例子入手 一步步去理解那些公式 但是不做代码实现 毕竟只要搞懂了这个算法的思想 代码的实现其实千变万化 甚至用 CV 库的话根本不用写代码 为啥出现这个二值化算法 OTSU 的致命缺陷在哪里 在大津算法 OTSU 中 由于采取的都是全局均值求出最佳全局阈值 但是在图片光照不均匀的场景 很容易把稍微模糊的边缘目标图像当作背景 为了避免这种场景 我们就可以考虑更为细腻的局部自适应阈值 它是根据图像不同区域亮度 不断计算更新局部阈值 同时不断 刷新 局部图像

    2026年3月26日
    2
  • 中文情感极性词典_形容寻找美食的词语

    中文情感极性词典_形容寻找美食的词语【实例简介】(全)包括知网Hownet情感词典,台湾大学NTUSD简体中文情感词典,情感词汇本体,情感词典及其分类,清华大学李军中文褒贬义词典,汉语情感词极值表,否定词典,褒贬词及其近义词【实例截图】【核心代码】SentimentAnalysisDic└──SentimentAnalysisDic├──知网Hownet情感词典│├──主张词语(中文).txt│├──主张词语(英…

    2022年8月23日
    12
  • dns服务器地址为空,dns服务器地址为空

    dns服务器地址为空,dns服务器地址为空dns服务器地址为空内容精选换一换在执行基本配置操作前,以root用户登录云服务器。在配置内网DNS后,弹性云服务器可以通过虚拟私有云的内网访问相关云服务,能够为用户提供更稳定、可靠的网络环境。配置DNS需要配置“/etc”目录下的resolv.conf文件,指定DNS服务器的IP地址。内网DNS服务器的IP地址与用户所处的区域相关,用户可通过表1获取内网DNS服务器的I内网下载镜像失败基本上都…

    2022年5月16日
    56

发表回复

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

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