2010-10-13 267 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