还是这个问题=======================================我要通过POST的方式,输入参数提交并下载torrent文件。
地址是:
http://www.jandown.com/link.php?ref=YObPZUIwfZ
我抓取了网页数据:
code YObPZUIwfZ.torrent 我用的代码参考的:
http://blog.csdn.net/xizhibei/article/details/6991987
C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse 求助哪位大侠能写一段提交“YObPZUIwfZ”这个参数,就能下载到相应的YObPZUIwfZ.torrent的文件的代码!
还有怎么保存,保存到那里的问题。==================我用的代码如下: HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.jandown.com/link.php");
request.CookieContainer = new CookieContainer();
//CookieContainer cookie = request.CookieContainer;//如果用不到Cookie,删去即可
//以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链
request.Referer = "http://www.jandown.com";
request.Accept = "text/html, application/xhtml+xml, */*";
//request.Headers["Accept-Language"] = "zh-CN,zh;q=0.";
//request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
//request.KeepAlive = true;
//上面的http头看情况而定,但是下面俩必须加
request.ContentType = "multipart/form-data;";
request.Method = "POST";
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
byte[] postData = encoding.GetBytes("code=YObPZUIwfZ");//postDataStr即为发送的数据,格式还是和上次说的一样
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, 0, postData.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
//如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可
if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip"))
{
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
}
StreamReader streamReader = new StreamReader(responseStream, encoding);
string retString = streamReader.ReadToEnd();
streamReader.Close();
return retString; =======================
版主老大给的答案是:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.jandown.com/fetch.php");
request.Referer = "http://www.jandown.com/link.php?ref=YObPZUIwfZ";
request.ContentType = "multipart/form-data; boundary=---------------------------7dd732b10abe"; var data=@"-----------------------------7dd732b10abe
Content-Disposition: form-data; name="code" YObPZUIwfZ
-----------------------------7dd732b10abe--"; byte[] postData = encoding.GetBytes(data);//postDataStr即为发送的数据,格式还是和上次说的一样
但我没试验成功。
地址是:
http://www.jandown.com/link.php?ref=YObPZUIwfZ
我抓取了网页数据:
code YObPZUIwfZ.torrent 我用的代码参考的:
http://blog.csdn.net/xizhibei/article/details/6991987
C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse 求助哪位大侠能写一段提交“YObPZUIwfZ”这个参数,就能下载到相应的YObPZUIwfZ.torrent的文件的代码!
还有怎么保存,保存到那里的问题。==================我用的代码如下: HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.jandown.com/link.php");
request.CookieContainer = new CookieContainer();
//CookieContainer cookie = request.CookieContainer;//如果用不到Cookie,删去即可
//以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链
request.Referer = "http://www.jandown.com";
request.Accept = "text/html, application/xhtml+xml, */*";
//request.Headers["Accept-Language"] = "zh-CN,zh;q=0.";
//request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
//request.KeepAlive = true;
//上面的http头看情况而定,但是下面俩必须加
request.ContentType = "multipart/form-data;";
request.Method = "POST";
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
byte[] postData = encoding.GetBytes("code=YObPZUIwfZ");//postDataStr即为发送的数据,格式还是和上次说的一样
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, 0, postData.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
//如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可
if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip"))
{
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
}
StreamReader streamReader = new StreamReader(responseStream, encoding);
string retString = streamReader.ReadToEnd();
streamReader.Close();
return retString; =======================
版主老大给的答案是:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.jandown.com/fetch.php");
request.Referer = "http://www.jandown.com/link.php?ref=YObPZUIwfZ";
request.ContentType = "multipart/form-data; boundary=---------------------------7dd732b10abe"; var data=@"-----------------------------7dd732b10abe
Content-Disposition: form-data; name="code" YObPZUIwfZ
-----------------------------7dd732b10abe--"; byte[] postData = encoding.GetBytes(data);//postDataStr即为发送的数据,格式还是和上次说的一样
但我没试验成功。
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
CookieContainer cc = new CookieContainer();
HttpWebRequest request = null;
HttpWebResponse response = null;
string url = string.Empty; try
{
url = "http://www.jandown.com/fetch.php"; request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/force-download";
request.CookieContainer = cc; var data=textBox1.Text;
//data = "formhash=" + formhash + "&subject=&message=" + content;
string loginstr = EncodePost(data);
byte[] replybyte = Encoding.UTF8.GetBytes(loginstr); request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = cc;
request.Referer = "http://www.jandown.com/link.php?ref=YObPZUIwfZ";
request.ContentType = "multipart/form-data; boundary=---------------------------7dd732b10abe";
request.Method = "POST"; request.ContentLength = replybyte.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(replybyte, 0, replybyte.Length);
newStream.Close(); response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("utf-8"));
string sReturn = reader.ReadToEnd();
response.Close();==================
data的数据为:
-----------------------------7dd732b10abe
Content-Disposition: form-data; name="code" YObPZUIwfZ
-----------------------------7dd732b10abe--我写到textBox1.Text里了。
调用 downit("YObPZUIwfZ");
就可以在当前目录生成 种子文件。
static void downit(string strKey)
{
string postdata = buildPostdata(strKey);
byte[] data = Encoding.UTF8.GetBytes(postdata);
int cacheLength = 1024;
byte[] b = new byte[cacheLength];
HttpWebRequest wq = (HttpWebRequest)WebRequest.Create(new Uri("http://jandown.com/fetch.php"));
wq.Referer = "http://jandown.com";
wq.Method = "POST";
wq.ContentType = "multipart/form-data; boundary=---------------------------7dd3d9c1c1326";
wq.Accept = "*/*";
wq.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)";
wq.ContentLength = postdata.Length; try
{
Stream rs = wq.GetRequestStream();
rs.Write(data, 0, data.Length);
//rs.Close();
HttpWebResponse wr = (HttpWebResponse)wq.GetResponse();
Stream ws = wr.GetResponseStream();
FileStream sw = File.Create(strKey + ".torrent");
int intReadlen = 0;
while ((intReadlen = ws.Read(b, 0, cacheLength)) > 0)
{
sw.Write(b, 0, intReadlen); }
sw.Close();
ws.Close();
rs.Close();
}
catch (Exception e)
{ Console.WriteLine(e.Message);
} } static string buildPostdata(string strKey)
{
StringBuilder sb = new StringBuilder();
sb.Append("-----------------------------7dd3d9c1c1326\r\nContent-Disposition: form-data; name=\"code\"\r\n\r\n").Append(strKey).Append("\r\n")
.Append("-----------------------------7dd3d9c1c1326\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\ndownload-----------------------------7dd3d9c1c1326--");
return sb.ToString();
}