httpwebrequest-the response string from baidu

问题描述

the response string from baidu

** i send the request string to www.baidu.com:**

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (X11; Linux x86_**64; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: BAIDUID=9C08E9A7478B349B70427EE7A5BBC2D5:FG=1; BAIDUPSID=9C08E9A7478B349B70427EE7A5BBC2D5; BDUSS=QxT2h3RW9qMU5WVm9MWU9tNm5hfmZZU2VPMFhXVUhhd2Z5bU5mZmxybWlCbjlVQVFBQUFBJCQAAAAAAAAAAAEAAABZ0NELbGlmYW5neHZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKJ5V1SieVdUNG; BD_UPN=133352
Connection: keep-alive

so i can get some apply string part 1:

HTTP/1.1 200 OK
Date: Sat, 10 Jan 2015 12:30:11 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: Keep-Alive
Cache-Control: private
Expires: Sat, 10 Jan 2015 12:30:11 GMT
Content-Encoding: gzip
Server: BWS/1.1
BDPAGETYPE: 2
BDQID: 0x8c10a2fd00002a56
BDUSERID: 198299737
Set-Cookie: BDSVRTM=203; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1466_10674_10873_10502_10500_11059_11067_10923_10700_10990_10618; path=/; domain=.baidu.com

and part 2:

"355275k22734307q 372Y37425315362163
003t367?237323l34002032002040420021701251at367251256Gw
01325U?352y260331347X336265%257,K:Z277326336?345?%371Z273346
245M371234373[b>>355_27031371250312314?356!A313364212C314tgF
fFfFFDFFF>377354315310N31727nm226316203253317303357332331<b22
3321,M27207aa247247247255S2632530532303}03034234Q@327r..."

from part 1,i see this "Content-Encoding: gzip",
so i try to decompress the part 2 string using zlib.h.
but the function "ret = inflate(&strm, Z_NO_FLUSH);"
return -3 : Z_DATA_ERROR means that invalid or incomplete deflate data.
if you can help me ,please.

解决方案

参考C/C++ 解压缩deflate编码

花了多半天终于调试了zlib,结果解决结果总是 Z_DATA_ERROR ,看来是输入数据有误也就是网站返回的数据有误。仔细看了头部, Transfer-Encoding: chunked,说明数据是经过分段传输过来,再次验证了一下解析chunked传输方式无误。为什么老是错误呢。。。。。。 于是自己把文件内容用deflate压缩再解压,结果OK代码正确。只是错误,说明输入数据格式有误,zlib库不认。我用的是firefox浏览器,在网站显示正常,firefox是开源的,下载源码果断看看。在mozilla-releasenetwerkstreamconvconverters nsHTTPCompressConv.cpp 仔细看了好一阵子果然发现了猫腻
你可以参考一下nsHTTPCompressConv.cpp

解决方案二:

gzip编码,deflate解码

解决方案三:

The response is end in chunk (as indicated in header Transfer-Encoding: chunked). You may need to concat the response before decompress.

时间: 2024-11-01 10:00:29

httpwebrequest-the response string from baidu的相关文章

asp.net 需要登陆的网站上下载网页源代码和文件_实用技巧

这个是文件下载类: 复制代码 代码如下: using System; using System.IO; using System.Net; using System.Web; public class SRWebClient { CookieContainer cookie; public SRWebClient() { cookie = new CookieContainer(); } /// <TgData> /// <Alias>下载Web源代码</Alias>

C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站

原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章利用了 HttpWebRequest 和 HttpWebResponse 模拟登录了有验证码的网站. 程序设计的界面很简单,三个TextBox分别输入用户名.密码和验证码,一个Image控件显示从网站请求到的验证码图片,还有两个按钮,一个换验证码,一个登录. 写程序前,先用浏览器的开发者工具观察下登

艾伟_转载:尝试通过HttpWebRequest向TAOBAO批量发布商品及上传图片

朋友开了个淘宝店,所以经常要将新商品及图片发布到网店里,而且有时还需要上传很多商品.如果手工一条一个商品的上传未免太花时间,所以我就琢磨着能否用WinForm写个程序通过WebRequest发送POST/GET请求来达到这个目的.由于上传上品时即有普通的Form字段信息需要提交,还需要上传图片,所以在写HttpWebRequest时参考了这个帖子http://bytes.com/topic/c-sharp/answers/268661-how-upload-file-via-c-code(How

!!!httpwebrequest如何获取当前请求的cookie(在线等)

问题描述 httpwebrequest如何获取当前请求的cookie,本机上存在baidu的cookie,但是HttpWebRequestrequestAgent=(HttpWebRequest)WebRequest.Create("http://www.baidu.com/");这个时候requestAgent.cookieContainer为什么为NULL???在线等..,,, 解决方案 解决方案二:结贴100%.......为啥木有人呢????解决方案三:HttpWebReque

让Response.Redirect页面重定向更有效率

用 Redirect 方法可将浏览器重定向到另一个 URL,而不是将内容发送给用户. 这里有一篇文章介绍使用Redirect<Using Response.Redirect Effectively> ,文章详细的讨论了Response.Redirect ,给出了一段代码: public static class HttpResponseExtensions { public static void RedirectUser(this HttpResponse response, string

jsp 页面生成静态页面(调包response)

过滤器 package cn.itcast.web.filter; import java.io.File; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRe

java-android 中 String 的限制

问题描述 android 中 String 的限制 在android的string中有什么限制?在一个http请求后获得一个响应,这个请求是个更大的string.我的问题是我不能获的整个string,原因是什么? response = httpclient.execute(httppost); String responseBody = EntityUtils.toString(response.getEntity()); // response string GlobalClass.print

通过Response输出方式导出Excel

        目前见过这么几种类型的导出Excel表:         1,NPIO方式,高仿Java.功能比较强大,但是比较重.         2, 前辈封装的....            3,本文要说的..            这周五又要导个Excel表,,上面估计是觉得平台封装的导出比较重吧,要我用response方式导出excel表,一个字,没用过.还好上过百度大学~            /// <summary> /// 获取表的标头 /// </summary>

高效的使用 Response.Redirect解决一些不必要的问题_实用技巧

介绍: 我正在评估一个 ASP.NET Web 项目应用.它有一些可扩展性问题.意味着当网站访问量增加的时候.系统将会变得缓慢.当我查看应用日志.我找到了大量的 ThreadAbortException. 这个应用大量的使用了 Response.Redirect (是的 endResponse= true),这个就是可扩展性问题的根源.通过endResponse = false 在Response.Redirect将会解决这个问题. 但这样做会导致应用程序出现一些奇怪的问题.因为应用程序将假设在