apache httpclient使用问题

yangbenmu1988 2013-06-13 08:18:51
问题的简单描述:
在使用post提交参数时,明明带过去的参数有11个,但是用抓包软件抓去的post参赛只带过去了10个,其中javax.faces.ViewState这个参赛对应的hashcode值被截取了一部分,最后一个参赛不见了?这是怎么回事?难道有设置最大的参赛长度?怎么设置?
以下是代码部分:
//提交的参数
mapPostOneContent.put(URLEncoder.encode("AJAXREQUEST","UTF-8"), URLEncoder.encode("_viewRoot", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("_authKey","UTF-8"), URLEncoder.encode("", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("j_id2:province","UTF-8"), URLEncoder.encode("31", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("username","UTF-8"), URLEncoder.encode(userName, "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("password","UTF-8"), URLEncoder.encode("", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("tokenPwd","UTF-8"), URLEncoder.encode("", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("verifyCode","UTF-8"), URLEncoder.encode("", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("j_id2_link_hidden_","UTF-8"), URLEncoder.encode("[object]", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("j_id2_SUBMIT","UTF-8"), URLEncoder.encode("1", "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("javax.faces.ViewState","UTF-8"), URLEncoder.encode(realHashCode, "UTF-8"));
mapPostOneContent.put(URLEncoder.encode("j_id2:j_id5","UTF-8"), URLEncoder.encode("j_id2:j_id5", "UTF-8"));

//抓包软件抓到的post请求体:
[2013/6/13 19:56:17:215]
POST (隐藏。。。)
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; doyo 2.1.4)
Connection: Keep-Alive
Accept-Encoding: gzip, deflate
Cookie: JSESSIONID=39nMR5zWhwL2G0CQ3vcGQ9BrXqVNQYpn00yP1SVhhJJRl5nlwlsr!-1008914258;LOGINVERIFYCODE=xdvMK4o8loc=
Referer: (隐藏。。。)
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cache-Control: no-cache
Host: (隐藏。。。)
Content-Length: 6069

AJAXREQUEST=_viewRoot&_authKey=&j_id2%253Aprovince=31&username=DZYX01&password=&tokenPwd=&verifyCode=&j_id2_link_hidden_=%255Bobject%255D&j_id2_SUBMIT=1&javax.faces.ViewState=H4sIAAAAAAAAAOVba4wkRR2vnd3b29u94x4LHBBP524v7C431%252FPomZ0Z1gssexyMzO6du%252BuBx4eh%250D%250AZ7pmp%252Fdmutvump2eOxYODJBI5MBHFAU10Q8mQkyMQR6KIASCQRIw%252BoEPioZoMIjGaFA%252FqFXV757u%250D%250AeeyCWXSSrZ2urn%252FV%252F%252FH7%252F%252Btfj3nkj2BLXQGjN%252BdXuFWOqXLiMnO8uAJLaPr%252BV276%252Bi51shoCQJMB%250D%250AAP2qAq6QlGWGW%252BG05IpaZjhZrgolDgmSyCwpEC4ipV5CdQXOSzy88%252FyfvvxceWxoOyE%252FA8AAAGMu%250D%250A6pJUkyURioiZwVUnBdhYkCQEthVWza%252F6ZxCMEd40psyVoOogq6BalbkeF8ckpQa2rBQEPmHQjIBI%250D%250AwFgWERn0WF0sEe51YhaYn3UQpzZCPLUR4rRB2g%252BiHYkp2QlO4WoQQUWnz1iDr48%252Bu376QUIfj1kd%250D%250AXNHB0DlRrqPrBZ6HIhiSFWlVEEvQop7sQH28jjD5EtSQMbBtcJZyLnOlCmRqTd8eMJnNA%252B1kqK5C%250D%250ARcSi9KAA%252FE5n4wQnwioYlOQTnKoa5H0g1SMfi7CkQMyJjDtpSAq%252Ffk6GJXlJOg3FEw3e4mZ9WkHu%250D%250AbmxecBDo3981Q9sl%252BSRUhHJzFgeTjbE0vOrtCICDmIpR6yKFSxUilUHcMlMXmFmztwVY1nGSsAHa%250D%250AK8QSSRvb3VhkAcqQwwyLEhJKMC%252BoaF0Mmy7dTUhoxcEiJPpCTUvpvbjlaEXg52qcJtTqNU9HXepg%250D%250AEXGoruqSsLbqDxNaRShVAtlYwC%252FnoKpyy9AkT6xHfWzSkry3cKxTp9Y1phnFgVb%252FFLiNfgtZ3%252Fp9%250D%250Avg1Z37Y6J01ZJtXb8Fy9m87odSRgTjm1MsfJW7a%252B%252FuxzF9%252Fyaj8IHQPDVYnjj3ElJCk5sA1VFKhW%250D%250ApCqvyVddTXvd3hjC5S7Kkizj%252FnbZ%252FeWlEleFt%252F199y0Pxf7xdggM5MBQBY9Rwh6WB1tLUl1EShOB%250D%250APTSriJKsIoqTA0Fcns6DIfJYx0YijO7AzVc
[2013/6/13 19:56:17:283]
++++++++++++++++++++++++++++++++++++++++++++
最后一个参赛的值没有完全被带过去,最后一个参数j_id2:j_id5直接没待过去。
谁可以帮忙解决一下,谢谢
...全文
197 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
烟斗老大 2015-05-12
  • 打赏
  • 举报
回复
楼主 这个问题我也遇到过,我做上传镜像时用的也是 apach 的httpClient , 用post请求, 信息都写在header中,总是会出现丢一个参数的情况,有时丢有时不丢,并且也是最后一个参数,现在没有找到根本的原因,楼上个各种回复无视吧~ 还上 jdk 文档里去找 呵呵了
kittaaron 2013-06-14
  • 打赏
  • 举报
回复
你要是用C#触发的没问题,就把那时候提交上去的HTTP报文抓下来对比一下就知道问题在哪儿了!Ajax-Expired没见过,有可能是服务器自定义的头,看看你访问的Server的说明吧,错误都提示出来了,如果Server不提供文档,靠自己猜是没用的
yangbenmu1988 2013-06-14
  • 打赏
  • 举报
回复
引用 3 楼 kittaaron 的回复:
不知道楼主用的mapPostOneContent是哪个东西,在http client的JAVA DOC查了一下没找到。 HTTP POST的body长度理应是没有限制的而且楼主的例子看起来是6K的样子应该也不会有超长什么的,看一下http client的API函数里有没有什么设置长度的吧,或者为什么不试一下之前说的把参数的位置换一下呢?说不定是最后一个参数的值有什么特殊的字符导致的呢?
今天早上抓包查看时,提交的参数都提交上去了。没有出现昨天被截取的情况。 但是返回来的结果我有点看不懂了:HTTP/1.1 200 OK Cache-Control: no-cache, must-revalidate, max_age=0, no-store Date: Fri, 14 Jun 2013 02:16:34 GMT Pragma: no-cache Content-Length: 231 Content-Type: text/xml;charset=UTF-8 Expires: 0 Ajax-Expired: View state could't be restored - reload page ? Ajax-Response: true <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="Ajax-Response" content="true" /><meta name="Ajax-Expired" content="View state could't be restored - reload page ?" /></head></html> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 返回信息中:Ajax-Expired是什么意思。提交的参赛都是正确的,为什么返回给我的信息不正确。c#做的时候都没有这么多问题。。。(这里的post是由失去焦点事件触发的ajax) 至于mapPostOneContent是我自定义的linkedhashmap的实例,你肯定找不到的。
kittaaron 2013-06-13
  • 打赏
  • 举报
回复
不知道楼主用的mapPostOneContent是哪个东西,在http client的JAVA DOC查了一下没找到。 HTTP POST的body长度理应是没有限制的而且楼主的例子看起来是6K的样子应该也不会有超长什么的,看一下http client的API函数里有没有什么设置长度的吧,或者为什么不试一下之前说的把参数的位置换一下呢?说不定是最后一个参数的值有什么特殊的字符导致的呢?
yangbenmu1988 2013-06-13
  • 打赏
  • 举报
回复
引用 1 楼 kittaaron 的回复:
倒数第二个参数的值怎么这么长。。拼参数的时候把最后一个值放到前面呢? 另外建议参数名不要用这种形式的javax.faces.ViewState,似乎没有必要,反正服务器始终会解析的
我是要实现自动登录功能,参赛不是我说了算的,所以没办法。。。至于产生的放置问题,应该不会有影响的。
kittaaron 2013-06-13
  • 打赏
  • 举报
回复
倒数第二个参数的值怎么这么长。。拼参数的时候把最后一个值放到前面呢? 另外建议参数名不要用这种形式的javax.faces.ViewState,似乎没有必要,反正服务器始终会解析的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧