2017-05-10 16 views
0
 var url = ConfigurationManager.AppSettings["URL"] + "/Archivador/MoverEnvio"; 

     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 

     if (Certificado != null) 
     { 
      // Y añadirlo a la petición HTTP 
      req.ClientCertificates.Add(Certificado); 
     } 

     req.Method = "PUT"; 
     req.ContentType = "application/json"; 

     ArchivadorModelPut Mover = new ArchivadorModelPut() 
     { 
      ID_ARCHIVADOR = idArchivador, 
      ID_ENVIO = idEnvio 

     }; 
     using (var streamWriter = new StreamWriter(req.GetRequestStream())) 
     { 
      string json = JsonConvert.SerializeObject(Mover); 

      streamWriter.Write(json); 
      streamWriter.Flush(); 
      streamWriter.Close(); 
     } 
     using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) 
     { 
      StreamReader reader = new StreamReader(resp.GetResponseStream()); 
      var dato = reader.ReadToEnd(); 
      string returnString = resp.StatusCode.ToString(); 
     } 

我得到這個異常:
System.Net.WebException: ':(400)錯誤的請求錯誤的遠程服務器上。'
在線:
使用(HttpWebResponse RESP =(HttpWebResponse)req.GetResponse())
我不知道如何解決這個問題,有人可以幫我嗎?
如果您需要更多關於它的信息,請告訴我。c#System.Net.WebException:'在遠程服務器上出錯:(400)錯誤的請求。' - HttpWebResponse

+0

您剛剛創建了請求對象,但尚未調用它。 – Gururaj

回答

0

此異常意味着請求已成功完成,但返回了400 HTTP響應。 400 HTTP響應通常意味着您的客戶端沒有發送正確的數據,但是它完全由目標服務器決定,在什麼情況下會返回400響應。

如果您發現WebException,則可以使用Response屬性查看HTTP響應 - 根據服務器的不同,可能會包含錯誤的描述。

如果目標服務返回400響應的正常做法,請查看Why does HttpWebRequest throw an exception instead returning HttpStatusCode.NotFound?瞭解可用於獲取響應的擴展方法,而不考慮狀態碼。或者,您可以使用不會拋出的替代類,例如HttpClient

+0

謝謝您的評論,這是非常有益的! @Justin –

相關問題