真没分了,但你进来你会兴奋的,试好乐美代金卷的代码
HeaderRequest URL:http://www.okbuy.com/card/findByCardCode/
Request Method:POST
Status Code:200 OK
Request Headers
Request Headersview parsed
POST /card/findByCardCode/ HTTP/1.1
Host: www.okbuy.com
Connection: keep-alive
Content-Length: 18
Origin: http://www.okbuy.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*
Referer: http://www.okbuy.com/order/form
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: OK_SES=1340633343990_27006517; _jzqy=1.1340633345.1340633345.1.jzqsr=baidu|jzqct=%BA%C3%C0%D6%C2%F2.-; usernameoremail=tianhe1006@126.com; obuid=133892; obtime=1344517163; _jzqa=1.3799599200967736000.1340633345.1340633345.1344517149.2; _jzqc=1; cookcoms=16974471%2C16962701%2C; __utma=26579491.349417223.1340633345.1344517148.1344520070.3; __utmc=26579491; __utmz=26579491.1340633345.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=%BA%C3%C0%D6%C2%F2; obsid=55tmfjtse610llcopu9o3o33r2
Form Dataview URL encoded
from Data
cardcode:z5c26a23f
Reponse Header
Response Headersview parsed
HTTP/1.1 200 OK
Server: nginx/1.0.15
Content-Type: application/json; charset=utf-8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 86
Accept-Ranges: bytes
Date: Thu, 09 Aug 2012 15:47:56 GMT
Age: 0
Connection: keep-alive
Via: okbuy
--------------------编程问答-------------------- 截图是一次正确 代金卷请求,返回的结果为
public void FabricateCookieContainer()
{
string compagesstr = "cardcode:z3c26b82f";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.okbuy.com/card/findByCardCode/");
request.Method = "Post";
request.Headers[HttpRequestHeader.Cookie] = " OK_SES=1340633343990_27006517; _jzqy=1.1340633345.1340633345.1.jzqsr=baidu|jzqct=%BA%C3%C0%D6%C2%F2.-; usernameoremail=tianhe1006@126.com; obuid=133892; obtime=1344517163; _jzqa=1.3799599200967736000.1340633345.1340633345.1344517149.2; _jzqc=1; cookcoms=16974471%2C16962701%2C; __utma=26579491.349417223.1340633345.1344517148.1344520070.3; __utmc=26579491; __utmz=26579491.1340633345.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=%BA%C3%C0%D6%C2%F2; obsid=55tmfjtse610llcopu9o3o33r2";
request.Accept = "application/json, text/javascript, */*";
request.Headers[HttpRequestHeader.AcceptCharset] = "GBK,utf-8;q=0.7,*;q=0.3";
request.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate,sdch";
request.Headers[HttpRequestHeader.AcceptLanguage] = "zh-CN,zh;q=0.8";
SetHeaderValue(request.Headers, "Connection", "Keep-Alive");
request.ContentType = "application/x-www-form-urlencoded";
SetHeaderValue(request.Headers, HttpRequestHeader.Host.ToString(), "www.okbuy.com");
//Origin:http://www.okbuy.com
request.Referer = "http://www.okbuy.com/order/form";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2";
//X-Requested-With:XMLHttpRequest
Encoding encoding = Encoding.Default;
byte[] bytesToPost = encoding.GetBytes(compagesstr);
MemoryStream memoryStream = new MemoryStream();
GZipStream gzipStram = new GZipStream(memoryStream, CompressionMode.Compress, true);
gzipStram.Write(bytesToPost, 0, bytesToPost.Length);
gzipStram.Close();
byte[] mypostdata = memoryStream.ToArray();
request.ContentLength = mypostdata.Length;
System.IO.Stream requestStream = request.GetRequestStream();
requestStream.Write(mypostdata, 0, mypostdata.Length);
requestStream.Close();
WebResponse response = request.GetResponse();
GZipStream responseStream = new GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
StreamReader streamReader = new StreamReader(responseStream, encoding);
string currentInfo = streamReader.ReadToEnd();
if (response.ContentLength != 137)
{
}
//u5bf9\u4e0d\u8d77\uff0c\u60a8\u7684\u4ee3\u91d1\u5238\u53f7\u7801\u4e0d\u5b58\u5728
}
错误的会返回
--------------------编程问答-------------------- 代码还存在如下问题:他得POST 编码是gzip(Accept-Encoding:gzip,deflate,sdch)
request.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate,sdch";
但是看它的内容大小又是18,如果不对 cardcode:z3c26b82f 这串字符进行 GZipStream 编码,大小刚好是18
如果对其压缩,压缩后会有一些特定的头,byte[] 数组大小为137。
我不是很明白 他发送出去POST 数据是否压缩过,我压缩和不压缩这种方式都试了,依然返回结果是报该代金卷不存在
--------------------编程问答--------------------
public void SetHeaderValue(WebHeaderCollection header, string name, string value)
{
var property = typeof(WebHeaderCollection).GetProperty("InnerCollection",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (property != null)
{
var collection = property.GetValue(header, null) as NameValueCollection;
collection[name] = value;
}
}
反射那段方法发掉了 --------------------编程问答--------------------
补充:.NET技术 , ASP.NET