2010-10-13 184 views
0

我试图以编程方式搜索上述网站上的项目。httpwebresponse does not work

以下不适合我。响应实际上是一个错误页面,而不是搜索结果页面。

请帮忙。

 string sUrl = "http://www.arrownac.com/"; 
     string sUrl1 = "http://app.arrownac.com/aws/pg_webc?s=P"; 

     HttpWebRequest owebreq = (HttpWebRequest)WebRequest.Create(sUrl1); 
     owebreq.Referer = sUrl;   

     ASCIIEncoding encoding = new ASCIIEncoding(); 

     string postdata = "search_token=" + "743C083102JPTR"; 
     byte[] data = encoding.GetBytes(postdata); 

     owebreq.ContentType = "text/html"; 
      //"application/x-www-form-urlencoded"; 

     owebreq.Method = "POST"; 
     owebreq.ContentLength = data.Length; 
     Stream newStream = owebreq.GetRequestStream(); 
     newStream.Write(data, 0, data.Length); 
     newStream.Close();   

     HttpWebResponse owebresp = (HttpWebResponse)owebreq.GetResponse(); 
     string sResult = string.Empty; 
     using (StreamReader sr = new StreamReader(owebresp.GetResponseStream())) 
     { 
      sResult = sr.ReadToEnd(); 
      sr.Close(); 
     } 
+0

嗯,什么不起作用?你有调试过吗?你会得到错误,如果是的话,是什么错误(如果页面是什么代码)?告诉更多关于你的问题的事情,否则你不会得到很好的答案! – Younes 2010-10-13 11:49:55

+0

没有代码错误,它执行得很好。但我得到的响应输出为<! - Vignette V6 Wed Oct 13 08:58:23 2010 - > Arrow Electronics:Error Occured手动如果我去http://www.arrownac.com/并输入零件和搜索POST动作映射到http://app.arrownac.com/aws/pg_webc?s=P,它会提取结果。 743C083102JPTR是一个示例部分,通过它可以搜索结果。 – Lakshmish 2010-10-13 13:01:51

回答

0

你可能不发送请求正是的网站预计它。我会做到以下几点:

 
1) use firefox. 
2) install firebug plugin 
3) use firefox to execute your scenario. 
4) Look at the actual requests sent from firefox (use the firebug plugin for that) 
5) Now, duplicate the exact same requests, down to the user-agent,cookies and request headers in code. 
6) profit? 
0

为什么写了这么多的代码时,它可以是简单的:

class Program 
{ 
    static void Main() 
    { 
     using (var client = new WebClient()) 
     { 
      var referer = "http://www.arrownac.com/"; 
      client.Headers[HttpRequestHeader.Referer] = referer;     
      var valuesToPost = new NameValueCollection 
      { 
       { "search_token", "743C083102JPTR" }, 
      }; 
      var url = "http://app.arrownac.com/aws/pg_webc?s=P"; 
      var result = client.UploadValues(url, valuesToPost); 
      var resultString = Encoding.Default.GetString(result); 
      Console.WriteLine(resultString); 
     } 
    } 
} 
+0

抱歉没有运气,结果与我的代码相同;看起来像目标网站不从外部程序采取POST,不知道如何覆盖。 – Lakshmish 2010-10-17 15:35:41