2014-07-06 154 views
0

。而不是迴應。當我在URL上執行HttpWebRequest.GetResponse時,GetResponse返回「遠程服務器返回一個錯誤:(400)錯誤的請求」錯誤(400)錯誤的請求使用webrequest

奇怪的是,當我在瀏覽器上運行這個URL時,我得到了的正確迴應

是不是webrequest需要返回與瀏覽器相同的值?

下面的代碼返回錯誤的請求

// Create a request for the URL. 
      WebRequest request = WebRequest.Create(
       "http://someUrl/api/v5/basicAuth"); 


      // Get the response. 
      WebResponse response = request.GetResponse(); 
      // Display the status. 
      Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
      // Get the stream containing content returned by the server. 
      Stream dataStream = response.GetResponseStream(); 
      // Open the stream using a StreamReader for easy access. 
      StreamReader reader = new StreamReader(dataStream); 
      // Read the content. 
      string responseFromServer = reader.ReadToEnd(); 
      // Display the content. 
      Console.WriteLine(responseFromServer); 
      // Clean up the streams and the response. 
      reader.Close(); 
      response.Close(); 

使用Web客戶端使用相同的結果,也試過。

任何想法如何獲得與瀏覽器相同的正確響應?

回答

0

標題說你得到了400個錯誤的請求,但在你的問題中你說404 Not Found。這些是非常不同的。對於404,我會解決URL本身以及請求如何被路由,DNS等,如果它是400,那麼我會使用像Fiddler這樣的東西來捕獲我的請求在使用瀏覽器時的外觀,然後看看該請求看起來像來自程序並看到有什麼不同/缺失。這可能是需要一些HTTP標頭,如內容類型,或處理cookie等,但像Fiddler這樣的東西至少可以讓你開始。

+0

yes你是正確的400錯誤,當嘗試簡單的WebRequest,如上圖所示。當我試圖發佈一些數據到這個URL時,我得到404。 – baaroz

+0

那麼你如何「假設」與URL進行交互?這是一個只響應GET,POST,PUT等的Web服務嗎?如果您可以通過瀏覽器成功獲取並查看數據,那麼我認爲GET可行。所以我會嘗試Fiddler來查看你的瀏覽器請求和你的代碼中的HttpWebRequest之間的區別。 – mppowe

+0

是這是一個響應GET的Web服務,POST.I將檢查Fiddler以查看Differences.thanks – baaroz

相關問題