绝对的诡异,100分求解

youbin_ 2009-12-11 11:24:21
有个url
https://ibsbjstar.ccb.com.cn/app/ccbMain?MERCHANTID=105440173990021&BRANCHID=441000000&POSID=100000802&ORDERDATE=20091211&ORDERID=002939&TXCODE=410404&MAC=4f482fc4f21f68f63fba8a6002c7f0d3

在ie中可以看到内容,但用java代码(URL,httpclient)都不能取到内容,同样的方式对其它的网址都可以,证书都有。
请求响应如下:

DEBUG [main] (CCBPaymentTracker.java:144) -
null:[[HTTP/1.1 200 OK]]

DEBUG [main] (CCBPaymentTracker.java:144) -
Date:[[Fri, 11 Dec 2009 03:13:13 GMT]]

DEBUG [main] (CCBPaymentTracker.java:144) -
Content-length:[[0]]

DEBUG [main] (CCBPaymentTracker.java:144) -
Set-Cookie:[[BIGipServerb2c_app_new=218431944.2336.0000; path=/]]

DEBUG [main] (CCBPaymentTracker.java:144) -
Connection:[[close]]

DEBUG [main] (CCBPaymentTracker.java:144) -
Server:[[testing]]

这下没招了,请高手指点下,谢谢!!
...全文
187 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
youbin_ 2009-12-11
  • 打赏
  • 举报
回复
to shine333:

我是用
HttpURLConnection connection = (HttpURLConnection) url.openConnection(new Proxy(Type.HTTP, new InetSocketAddress("mh-adsl", 8080)));
这样的代码提交的,其它几个参数在ie提交的时候能看的到吗?我就奇怪,ie能看到,我的代码就取不到
shine333 2009-12-11
  • 打赏
  • 举报
回复
比如,我用FireFox + Firebug看,发送的报文中的HTTP头应当是:
Host ibsbjstar.ccb.com.cn
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language zh-cn,zh;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Cookie BIGipServerb2c_app_new=319095240.42271.0000
If-Modified-Since Fri, 15 Jun 2007 12:36:27 GMT
Cache-Control max-age=0
shine333 2009-12-11
  • 打赏
  • 举报
回复
OK,你的HTTP请求是否和IE或者其他浏览器一样。
你可能只发送了
GET https://ibsbjstar.ccb.com.cn/app/ccbMain?MERCHANTID=105440173990021&BRANCHID=441000000&POSID=100000802&ORDERDATE=20091211&ORDERID=002939&TXCO
Host: ibsbjstar.ccb.com.cn

这样最必须的信息,而类似User-Agent, Accept-Encoding, Accept, Accept-Charset之类的头信息没有发送
youbin_ 2009-12-11
  • 打赏
  • 举报
回复
to shine333:

谢谢你的回复!你可以在ie中看到上面的url的内容,因为我需要解析它的内容的,响应已经是200了,获得的头就那几个
ghb5371548 2009-12-11
  • 打赏
  • 举报
回复
up
shine333 2009-12-11
  • 打赏
  • 举报
回复
你确保所有的HTTP头都在了吗?

第二,这个处理可能是给他内部API自己用的,比如某个Ajax,只要判断Http Status Code是否正常(200)就可以了,不需要内容,所以他的Content-Length=0
frank3G 2009-12-11
  • 打赏
  • 举报
回复
URL编码
yang677888 2009-12-11
  • 打赏
  • 举报
回复
好难啊
DreamStyle 2009-12-11
  • 打赏
  • 举报
回复
不懂,等待高手解惑也!
angello11 2009-12-11
  • 打赏
  • 举报
回复
不懂,up
youbin_ 2009-12-11
  • 打赏
  • 举报
回复
搞定了,就是那个User-Agent参数:
System.getProperties().setProperty("httpclient.useragent", "Mozilla/4.0");
就可以了。
谢谢 shine333,结贴!
qq774097676 2009-12-11
  • 打赏
  • 举报
回复
这个有难度 学习一下
youbin_ 2009-12-11
  • 打赏
  • 举报
回复
非常感谢shine333的指导,我等下再按照你的指示去试试。。
youbin_ 2009-12-11
  • 打赏
  • 举报
回复
我得到的长度总是0,我就纳闷了!
frank3G 2009-12-11
  • 打赏
  • 举报
回复
顶啊,学习,有意思
shine333 2009-12-11
  • 打赏
  • 举报
回复
IE这种烂货,不能!
TO ALL: 工欲善其事,必先利其器,FireFox+FireBug或者类似工具,是开发web必备的,尤其是向lz这样开发http client的时候,查看与服务器间通讯时request&response的http header信息,同时还需了解RFC 2616(http1.1)协议
shine333 2009-12-11
  • 打赏
  • 举报
回复
是不是你代理的问题???
我这边和浏览器看到的内容(至少Content-Length是一样的1635):信息提示系统忙,请稍后再试
    URL url = new URL(
"https://ibsbjstar.ccb.com.cn/app/ccbMain?MERCHANTID=105440173990021&BRANCHID=441000000&POSID=100000802&ORDERDATE=20091211&ORDERID=002939&TXCO");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int contentLength = connection.getContentLength();
System.out.println(contentLength);

67,512

社区成员

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

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