Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 655|回复: 0

springboot 采用HttpClient获取天气预报 异常及原因

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-18 21:04:34 | 显示全部楼层 |阅读模式

    采用httpClient调用天气预报地址获取出现异常

    2018-10-04 15:18:25.815 ERROR 10868 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpServerErrorException: 502 Bad Gateway] with root cause
    
    org.springframework.web.client.HttpServerErrorException: 502 Bad Gateway
        at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:97) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
        at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
        at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RE
    LEASE]

    当前异常产生原因是调用服务器地址我写错了导致的异常

    错误代码:

    正确的服务地址:

    第二个异常json转换异常

     正确获取到一个json格式数据后要将当前json字符串转换成指定类型对象

        private WeatherResponse doGetWeather(String uri){
            //通过spring  restTemplate 客户端发送请求获取 String类型响应实体
            ResponseEntity<String> respString = restTemplate.getForEntity(uri, String.class);
    
            //Springboot内部集成了json操作对象
            ObjectMapper objectMapper = new ObjectMapper();
            WeatherResponse resp=null;
            String strBody = null;
            //通过响应客户端获取状态码判断是否为成功状态码
            if(respString.getStatusCodeValue()==200){
                //获取响应实体内容实体
                strBody = respString.getBody();
            }
            try {
                //通过json操作对象将string 类型数据转为指定类型对象
                resp = objectMapper.readValue(strBody, WeatherResponse.class);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return resp;
        }
    }

    由于weatherResponse实体内定义的属性与json 返回属性不一致

    public class WeatherResponse implements Serializable{
    
        private Weather weather;
    
        private Integer status;
    
        private String desc;

    json数据属性:  返回json 数据属性为data  而实体中属性Weather 为weather 应该修改为Weather  data   

    异常信息:这里会清晰的指出属性是哪一个问题

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-2 01:42 , Processed in 0.114030 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表