关于HttpClient请求获取数据

2023-11-14

httpClient请求获取网站数据



 今天一网友问我,他写的httpClient请求为什么获取不到数据?他写的代码如下:

StringBuffer buffer = new StringBuffer();
String url1 = "http://api.jisuapi.com/weather/query?appkey=8b650df3d443004f&city=贵阳";
try {
    URL url = new URL(url1);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    InputStream is = conn.getInputStream();
    Reader reader = new InputStreamReader(is,"utf-8");
    char[] c = new char[1024];
    int count = -1;
    while ((count = reader.read(c)) > 0) {
        buffer.append(c, 0, count);
    }
    reader.close();
    JSONObject obj = JSONObject.parseObject(buffer.toString());
    Weather weather = JSONObject.toJavaObject(obj, Weather.class);
    model.addAttribute("msg",weather);
    System.out.println(weather);
    System.out.println(buffer.toString());
} catch (IOException e) {
    e.printStackTrace();
}
直接通过main方法运行是可以获取到的,但是通过系统页面点击却获取不到。甚是奇怪, 至今我还没搞明白为什么上面的方法不行!希望有知道的大神可以告诉小弟下,感激不尽!!!


后来我给他换了一种方式,如下是我写的代码:

String url = "http://api.jisuapi.com/weather/query?appkey=8b650df3d443004f&city=贵阳";
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
try {
    CloseableHttpResponse response = httpClient.execute(get);
    int statusCode =response.getStatusLine().getStatusCode();
    System.out.println(statusCode);
    if(statusCode == 200) {
        HttpEntity entity =response.getEntity();
        String content = EntityUtils.toString(entity,"utf-8");
        System.out.println(content);
        JSONObject obj = JSONObject.parseObject(content);
        Weather weather = JSONObject.toJavaObject(obj, Weather.class);
        model.addAttribute("msg",weather);
    }
    //关闭httpclient
    response.close();
    httpClient.close();
} catch (IOException e) {
    e.printStackTrace();
}
我用的比较多的就是这种,至于为什么上一个会获取不到,还希望知道的大神给予指教。  


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于HttpClient请求获取数据 的相关文章

随机推荐

  • STL函数模板入门

    Unit01 模板起源 01 C 为静态类型语言 这种语言有很多的数据类型 基本类型 类类型 在效率和类型安全上是无可比拟的 但这种语言在很大程度上也给程序员编写通用代码带来瓶颈 使程序员不得不为每一种数据类型编写完全相同或近乎完全相同的代
  • git提交代码会报 vue-cli-service lint found some errors. Please fix them and try committing again

    转载 https blog csdn net j15533415886 article details 92003047 转载 https blog csdn net qq 42180156 article details 10248098
  • web-view 调用微信小程序的方法

    1 1api文件夹下新建api js 获取微信公众号配置授权 后端提供接口 initConfig url gt return API GET api getJsapiSignature url url 1 2 utils文件夹下新建一个js
  • 数据结构day3(2023.7.17)

    一 Xmind整理 二 课上练习 练习1 时间复杂度 时间复杂度 只保留最高阶 f n 3 n 3 n 2 100 n T n O 3 n 3 n 2 100 n O 3 n 3 O n 3 1 gt O 1 常数阶 int t a 1 a
  • 使用百度地图JavaScript实现驾车/公交/步行导航功能

    1 2 3 4 5
  • 【语义分割】12、Fully Attentional Network for Semantic Segmentation

    文章目录 一 背景和动机 二 方法 三 效果 出处 AAAI2022 一 背景和动机 语义分割中 non local NL 的方法起到了很好了捕捉 long range 信息的作用 大致可分为 Channel non local 和 Spa
  • 使用insert into和insert overwrite插入数据的区别【Hive or Odps】

    1 创建一个测试表insert test 标识创建表insert test 默认新增id列 并插入一条数据1 CREATE TABLE insert test AS SELECT 1 AS id 2 插入数据 使用insert into插入
  • 记录:查看ubuntu版本信息。

    cat proc version uname a lsb release a WSL Ubuntu 20 04运行结果 lsb release a 查看Release和Codename uname a 内核版本和操作系统32 64位 cat
  • 32位机内存管理(下)

    既然这样 段描述符表放在那里呢 80386中引入了两个新的寄存器来管理描述符表 一个是48位的全局描述符表寄存器GDTR 一个是16位的局部描述符表寄存器LDTR 那么 为什么有两个描述符表寄存器呢 GDTR指向的描述符表为全局描述符表GD
  • 数据库原理 封锁的粒度

    1 封锁粒度是什么 封锁对象的大小称为封锁的粒度 封锁对象 逻辑单元 物理单元 2 选择封锁粒度的原则 封锁粒度和系统的并发度 系统的开销密切相关 封锁的粒度越大 数据库能够封锁的数据单元就越少 并发度就越小 系统开销也就越小 封锁的粒度越
  • Android三维模型解决方案

    1 原生OpenGL ES 无需多说 虽然OpenGL已经出来这么多年了 但无疑还是现在普及最广的 尤其在移动端 所以用原生OpenGL ES方案可以解决 2 jpct 最推荐 JPCT是一款基于OpenGL技术开发的3D图形引擎 PC环境
  • 数据迁移-jdbc

    1 jdbc工具类 import java io BufferedInputStream import java io FileInputStream import java io InputStream import java util
  • nginx的https和http共存反向代理配置

    一 设置http反向代理 正在上传 重新上传取消 upstream ly com server 192 168 1 100 88 server 192 168 1 101 88 upstream home ly com server 192
  • Git本地项目推送到远程仓库

    目录 1 初始化git 2 添加远程地址并给地址起一个别名 3 合并远程代码 4 推送 5 常见问题 6 无法推送 7 查看远程仓库信息 8 拉取与本地不相关的git项目 9 配置ssh公钥 1 初始化git 进入项目目录 git init
  • np.mgrid

    功能 返回多维结构 常见的如2D图形 3D图形 np mgrid 第1维 第2维 第3维 第n维的书写形式为 a b c c表示步长 为实数表示间隔 该为长度为 a b 左开右闭 或 a b cj cj表示步长 为复数表示点数 该长度为 a
  • R语言实战笔记--第十六章 高级图形进阶

    R语言实战笔记 第十六章 高级图形进阶 标签 空格分隔 R语言 lattice 交互式图形 图形系统简介 本文为R语言实战中最后一章 介绍的是图形的高级进阶 主要讲述了两个包 lattice和ggplot2 以及交互式图形的做法 极大扩展了
  • NacosSpringCloud

    Nacos尝试配置SpringCloud 新来了一个项目 有并发要求 选择了springcloud这套 至于eureka已经闭源了 就没有考虑 最后选择了阿里的nacos 服务发现和配置中心都集中在注册中心 配置支持动态加载 中文文档丰富
  • 视频质量算法有几种的介绍,视频质量技术及编码

    首先介绍SSIM是一种全参考 Full Rerence 视频质量评价算法 全参考视频图像质量评价指标 它分别从亮度 对比度 结构三方面度量视频图像相似性 而全参考评价算法必须同时知道原始视频和失真视频 也就是想计算结构相似度 就得先找到两个
  • 打开win7的系统更新服务器失败,win7的windows update无法启动,手动在服务里启动提示“错误2:系统找不到指定文件...

    您好 该问题有可能是系统文件损坏导致的 建议您尝试以下方法操作 方法一 建议您暂时卸载掉电脑上安装的第三方杀毒软件 再打开控制面板 操作中心 疑难解答 点使用Windows Update 解决问题 根据提示自动修复更新是出现的问题 方法二
  • 关于HttpClient请求获取数据

    httpClient请求获取网站数据 今天一网友问我 他写的httpClient请求为什么获取不到数据 他写的代码如下 StringBuffer buffer new StringBuffer String url1 http api ji