HttpClient接收数据的问题

java 发送 Http 请求笔记 以及踩得坑 java 发送 Http 请求笔记 http 代码 这几天使用 java 代码发送 http请求, 真的是搞得我焦头烂额. 在网上找了几十篇文档, 几乎都大同小异. 首先是网络上最通用的代码 public static void callUrl(@NonNull String json, @NonNull String url, Charset charset) throws IOExce... 阅读详情

背景:
竞价大厅和支持系统进行项目的部署和竞价数据回调时,涉及到了传输XML文件。
发送端采用的是HttpClient技术,将XML格式的String作为Http的Body发送。

原先的做法:
接收端通过Jsp的request对象的getInputStream()方法获取输入流,然后用read()方法,将输入流按照byte读取,存入byte[],然后还原成对应编码的String,并进行解析。

大厅升级时,遇到的问题:
由于涉及多产品,发送端的数据量大大增加。如果发现String长度如果超过4K多,就会报告XML解析报错。
逐一调试分析,发现错误的核心是inputstream.read()方法,该方法只接收到了4096个byte。
使用inputstream.read(byte[], int off, int len )方法指定长度也不行,还是只读4096个字节。

解决:
增加一个缓冲,采用BufferedReader读取inputstream,然后针对BufferedReader逐行读取,则接收完全正常。

原因分析:
没发现inputStream读取有长度限制;写了个读file的Demo测试inputStream的read方法,再次确定不存在长度的问题。
对inputStream作2次read(),发现第二次是从第4097个字节开始往下读,看来问题和缓冲相关。
翻翻HttpClient的源代码,基本确定原因是:HttpClient的传输协议是对Socket进行了封装,而默认Socket的缓冲大小4096。Socket缓冲满了就flush,发送给客户端,那么如果接收端没有用缓冲接收,一次最大只能解收到4096个字节。

springboot httpclient遇到的问题 接口接收数据的类型有String和pojo对象类型,传参为String类型时有以下问题: 1.在接口端获取到的永远是null,并且报参数名字不一致的错误(is not present) 后端接口使用 CloseableHttpClient 调用接口, httpost.setEntity()传String类型到接口,查询数据库中的用户数据,接口代码如下: @ApiOperation(val... 阅读详情

相关推荐

告别Overleaf!本地LaTeX环境配置:VSCode+TeXLive完全指南(Windows/Mac双平台)

本文详细介绍了如何在Windows和Mac平台上配置本地LaTeX环境,使用VSCode和TeXLive打造高效的专业写作工作流。从TeXLive安装到VSCode插件配置,再到高级技巧与性能优化,帮助用户摆脱Overleaf限制,实现更快速、更私密的学术写作体验。

3c4x5z6v7b的博客 952

httpclient读取inputstream流

[code="java"] public static String getString(InputStream is, String charset) { String str = null; if (is == null) { return str; } StringBuffer sb = new StringBuffer(); try { B...

leo133845920的博客 2024

Claude Code与Vibe Coding:2026年AI编程实战指南

AI编程助手是基于大语言模型的智能代码生成工具,通过理解编程上下文提供精准的代码补全和重构建议。其核心原理是利用深度学习技术分析代码语义,将自然语言指令转化为可执行代码。这种技术能显著提升开发效率,减少重复性编码工作,特别适用于快速原型开发和复杂问题求解。在实际应用场景中,AI编程助手可与Vibe Coding方法论结合,建立流畅的人机协作工作流。Claude Code作为先进的AI编程工具,支持多语言开发和智能错误检测,而Vibe Coding则强调自然交互和迭代优化,两者协同为开发者提供完整的AI编程解

weixin_29057695的博客 340

使用HttpClient发送和接收请求数据

工具类import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.Consts; import org.apache.http.NameValuePair; import...

官 2万+

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek,并借助DuckDuckGo实现联网查询

虎鲸不是鱼 1698

关于InputStream,Servlet和HttpClient

1.InputStream的read方法 一次最多可以读取8075个字节。 2.servlet response输出的时候,缓冲区大小为16384个字节(我自己电脑的Tomcat默认配置,貌似不同的电脑缓冲区大小是不一样的),当超过16384个字节时,即使不flush,数据也会被自动flush到client端。 3.若是用httpClient向service发送http请求的话,在servle...

limengchengg的专栏 256

从IMU数据到精准定位:手把手推导ESKF中的四元数运动学与误差状态方程

本文详细介绍了如何从IMU数据推导ESKF中的四元数运动学与误差状态方程,实现精准定位。通过分析误差状态卡尔曼滤波器的优势、四元数表示的必要性,以及IMU测量模型和运动学基础,提供了完整的数学推导和实现要点。适合机器人定位和自动驾驶领域的算法工程师参考,帮助优化导航系统性能。

weixin_30271335的博客 679

Java发送HttpClient请求和接收响应结果

1、写一个HttpRequestUtils工具类,包括post请求和get请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

浩瀚星空,法力无边;其大无外,其小无内。 7037

CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(一)

CHB-MIT癫痫EEG脑电数据处理CHB-MIT头皮脑电图数据介绍CHB-MIT头皮脑电图数据下载CHB-MIT头皮脑电图数据处理提取原始数据滤波(0.1~50hz)数据分块(时间窗口) CHB-MIT头皮脑电图数据介绍 该数据库收集自波士顿儿童医院,其中包括患有难治性癫痫发作的儿科患者的脑电图记录。停用抗癫痫药物后最多持续几天对受试者进行监测,以表征其癫痫发作并评估其对手术干预的候选资格。 从22位受试者中收集了23个病例的记录(5例男性,3至22岁; 17例女性,1.5至19岁)。 (案例chb21是

AI_DOG的博客 1万+

提升RAG效果:为何 JSON 格式远胜 Markdown?

在构建强大的 RAG (检索增强生成) 系统时,文档解析是至关重要的第一步。它直接影响着后续的检索效率和生成质量。在众多文档格式中,JSON (JavaScript Object Notation) 格式正逐渐展现出其相对于传统 Markdown 格式的巨大优势。本文将深入探讨 JSON 在 RAG 系统文档解析中的卓越之处,并结合具体案例,让你理解为何 JSON 才是构建下一代智能应用的更优选择。RAG 系统的核心目标是让模型能够利用外部知识库,生成更精准、更贴合实际的答案。

simoncool23的博客 2714

HttpClient使用详解

HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=new DefaultHttpClient(); 发送GET请求: 先创建一个HttpGet对象,传入目标的网络地址,然后调用HttpClient的execute()方法即可: HttpGet HttpGet=new HttpGet(“http://w

姚佳伟 1万+

【时时三省】vector cast 常见错误解决/vcast常见错误解决

介绍在使用 vector cast/vcast 软件的过程中,遇到的异常问题。其它异常可以私信解决(购买专栏的前提下)。

时时三省的博客 447

http接口实现跨域传递json实体(httpclient和jsonp方式都有)

不同系统间的http接口使用httpclient和jsonp方式传递数据

oLengYueHun的博客 1437

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java accept encoding_httpclient访问网站时设置Accept-Encoding为gzip,deflate返回的结果为乱码的问题...

近期迷恋上httpclient模拟各种网站登陆,浏览器中的开发者工具中查看请求头信息,然后照葫芦画瓢写到httpclient的请求中去,requestheader中有这么一段设置:Accept-Encoding gzip,deflate之前模拟其他网站的时候这块并没有太在意,因为无论我在httpclient中添加上这段还是不添加,请求网站数据都没有任何影响,也不影响网站的安全检测,所以当...

weixin_36108036的博客 1215

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

使用IBM TDI中的httpclient连接器

        IBM TDI中的连接器httpclient是一个访问http url的客户端,它的输出映射是通过写入http头部而传送到http url的,但输出映射的属性前必须加http.这个前缀。若访问的http url是在domino服务器上,那么domino获得这些属性时,其头部属性有一个前缀http_。例如在输出映射定义为http.uid用户id属性,那么domino得到的头部是htt

快跑专栏 1784

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HTTPCLIENT源码分析

HTTPCLIENT源码分析 http是应用层的协议,在传输层使用tcpip协议,可以从其源码分析,中间层就是调用socket(基于lwip协议)编程加上http协议实现,下面看源码。想看看其源码的可以从下面目录下载。 下载目录:点击这里 路径在middleware/third_party/httpclient中。 源码分析 以前已经介绍过httpclient api的使用了,此处不在赘述,本文主...

qq_38240926的博客 1119

HttpClient多线程并发问题

建立连接         在HttpClient中使用多线程的一个主要原因是可以一次执行多个方法。在执行期间,每一个方法都使用一个HttpConnection实例。由于在同一时间多个连接只能安全地用于单一线程和方法和有限的资源,我们就必须确保连接分配给正确的方法。而MultiThreadedHttpConnectionManager完全可以代替我们完成这一项工作,这样我们就不必去考虑多线程带...

Java技术交流 1036

关于使用httpclient传递json数据乱码的问题

关于使用httpclient post 传递json数据,服务器接受数据中文乱码问题的解决办法

li_yan_fei的博客 9804

HttpClient请求另一个系统接口接收数据

使用HttpClient接受另一个系统接口提供的数据 本文适用于新手不会使用httpclient请求接口的情况,大神请别闹 httpclient介绍 自行百度,这里不做介绍 第一步,先封装httpclient 这里仅封装get请求,post同理,自行百度 public static String doGet(String url, Map<String, String> param) ...

weixin_38884208的博客 1229

HttpClient,get请求,发送并接收数据

      HttpClient http = new HttpClient();                     //创建HttpClient实例,类似于打开浏览器      GetMethod get = new GetMethod("www.baidu.com");             //创建GET方法的实例,类似于在浏览器地址栏,输入URL      get.ge...

weixin_30394633的博客 150

JAVA httpClient get请求及接收示例代码

1、java原生httpClient4.5 get请求 import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache...

lan_qinger的博客 2973
上一篇: 产品列表完毕
下一篇: 出差记事
跑得快的东东
博客等级 码龄23年 2粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值