各位好:
小弟近日在弄一个自己开发的360网盘的客户端,现在使用HttpWebRequest成功的登录、下载与获取网盘文件数据,但是每当需要Post数据去360网站时,Response读入的数据为:{"errno":21013,"errmsg":"\u8bf7\u6c42\u53d1\u9001\u5230\u9519\u8bef\u96c6\u7fa4"}。
而我使用Python,同样的过程,却能够成功,不知道这是为什么?请各位帮帮忙分析一下。万分感谢。
C#代码:
loginurl = "http://c17.yunpan.360.cn/file/list";
cookieContainer = myHttpWebRequest.CookieContainer;
myHttpWebRequest = (HttpWebRequest)WebRequest.Create(loginurl);
//新建一个HttpWebRequest
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.Headers["DNT"] = "1";
myHttpWebRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)";
myHttpWebRequest.Timeout = 60000;
myHttpWebRequest.KeepAlive = true;
myHttpWebRequest.Method = "POST";
string requestBody = string.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}&{12}={13}",
HttpUtility.UrlEncode("ajax", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("1", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("order", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("asc", Encoding.GetEncoding("UTF-8")),
HttpUtility.UrlEncode("page", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("0", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("page_size", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("300", Encoding.GetEncoding("UTF-8")),
HttpUtility.UrlEncode("path", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("/", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("t", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("0.09739808690089124", Encoding.GetEncoding("UTF-8")),
HttpUtility.UrlEncode("type", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("1", Encoding.GetEncoding("UTF-8")));
//requestBody = "type=2";
byte[] ComfirmSendBytes = Encoding.GetEncoding("UTF-8").GetBytes(requestBody);
myHttpWebRequest.ContentLength = ComfirmSendBytes.Count();
string aaa = Encoding.UTF8.GetString(ComfirmSendBytes);
//Stream PostStream = myHttpWebRequest.GetRequestStream(); using (Stream stream = myHttpWebRequest.GetRequestStream())
{
stream.Write(ComfirmSendBytes, 0, ComfirmSendBytes.Length);
} myHttpWebRequest.CookieContainer = cookieContainer;
myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
//sm = myHttpWebResponse.GetResponseStream();
StreamReader reader = new StreamReader(myHttpWebResponse.GetResponseStream());
HtmlRequst = reader.ReadToEnd();[code=csharp][code=csharp][/code][/code]Python源码:
loginUri=posturl+'/file/list'
urllib2.install_opener(opener)
headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)',
'ContentType' : 'application/x-www-form-urlencoded','KeepAlive':'true','Method':'POST'}
postData='type=2&t=0.6666859434917569&order=asc&path='+path+'&page=0&page_size=300&ajax=1'
request = urllib2.Request(loginUri, postData, headers)
response = urllib2.urlopen(request)
text = response.read()PythonC#
小弟近日在弄一个自己开发的360网盘的客户端,现在使用HttpWebRequest成功的登录、下载与获取网盘文件数据,但是每当需要Post数据去360网站时,Response读入的数据为:{"errno":21013,"errmsg":"\u8bf7\u6c42\u53d1\u9001\u5230\u9519\u8bef\u96c6\u7fa4"}。
而我使用Python,同样的过程,却能够成功,不知道这是为什么?请各位帮帮忙分析一下。万分感谢。
C#代码:
loginurl = "http://c17.yunpan.360.cn/file/list";
cookieContainer = myHttpWebRequest.CookieContainer;
myHttpWebRequest = (HttpWebRequest)WebRequest.Create(loginurl);
//新建一个HttpWebRequest
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.Headers["DNT"] = "1";
myHttpWebRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)";
myHttpWebRequest.Timeout = 60000;
myHttpWebRequest.KeepAlive = true;
myHttpWebRequest.Method = "POST";
string requestBody = string.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}&{12}={13}",
HttpUtility.UrlEncode("ajax", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("1", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("order", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("asc", Encoding.GetEncoding("UTF-8")),
HttpUtility.UrlEncode("page", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("0", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("page_size", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("300", Encoding.GetEncoding("UTF-8")),
HttpUtility.UrlEncode("path", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("/", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("t", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("0.09739808690089124", Encoding.GetEncoding("UTF-8")),
HttpUtility.UrlEncode("type", Encoding.GetEncoding("UTF-8")), HttpUtility.UrlEncode("1", Encoding.GetEncoding("UTF-8")));
//requestBody = "type=2";
byte[] ComfirmSendBytes = Encoding.GetEncoding("UTF-8").GetBytes(requestBody);
myHttpWebRequest.ContentLength = ComfirmSendBytes.Count();
string aaa = Encoding.UTF8.GetString(ComfirmSendBytes);
//Stream PostStream = myHttpWebRequest.GetRequestStream(); using (Stream stream = myHttpWebRequest.GetRequestStream())
{
stream.Write(ComfirmSendBytes, 0, ComfirmSendBytes.Length);
} myHttpWebRequest.CookieContainer = cookieContainer;
myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
//sm = myHttpWebResponse.GetResponseStream();
StreamReader reader = new StreamReader(myHttpWebResponse.GetResponseStream());
HtmlRequst = reader.ReadToEnd();[code=csharp][code=csharp][/code][/code]Python源码:
loginUri=posturl+'/file/list'
urllib2.install_opener(opener)
headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)',
'ContentType' : 'application/x-www-form-urlencoded','KeepAlive':'true','Method':'POST'}
postData='type=2&t=0.6666859434917569&order=asc&path='+path+'&page=0&page_size=300&ajax=1'
request = urllib2.Request(loginUri, postData, headers)
response = urllib2.urlopen(request)
text = response.read()PythonC#
==>ComfirmSendBytes.Length
myHttpWebRequest.CookieContainer = cookieContainer;提到
myHttpWebRequest.Method = "POST";下面HtmlRequst = reader.ReadToEnd();
==>string sResult= reader.ReadToEnd();Please try
谢谢您,找到问题了,携带Cookies的位置应该在getResponse之前完成。