2014-09-19 132 views
0

我有上傳文件(即一直與我以前的代碼生成的XML)來給了我以下信息的Web服務:上傳文件

URL(http://www.example.com/upload
端口(1234)
方法(POST或PUT)

所以我在這裏搜索了很多,並發現了一些使用WebClient的代碼,它似乎只是我所需要的。

try 
{ 
    using (WebClient webclient = new WebClient()) 
    { 
     byte[] rawResponse = webclient.UploadFile(httpUrl, xmlNewFile); 
     Console.WriteLine("Remote Response: {0}", System.Text.Encoding.ASCII.GetString(rawResponse)); 
     Console.ReadLine(); 
    } 
} 
catch (Exception ex) 
{ 
    uploadError = true; 
} 

我的httpUrl看起來像http://www.example.com:1234/upload

問題是我在用UploadFile命令運行該行後立即得到第一個機會異常(「System.Net.WebException」在System.dll中發生的第一個機會異常)。 我可以使用瀏覽器打開給定端口上的給定URL,因此連接本身不應該是問題。

任何想法從哪裏開始我尋找造成的錯誤? 謝謝!

編輯:好吧,多虧了你們現在我知道我從服務器得到一個錯誤。

System.Net.WebException: The remote server returned an error: (403) Forbidden. 
at System.Net.WebClient.UploadFile(Uri address, String method, String fileName) 
at System.Net.WebClient.UploadFile(String address, String fileName) 
at XML_Export.Program.Main(String[] args) in Program.cs:line 177 

有趣的是,我用我的瀏覽器得到了「200 OK」......嗯。

+1

什麼是來自'WebException'的消息?如果你看看'http:// www.example.com/upload',表單是否發佈到另一個位置? – mason 2014-09-19 14:31:04

+3

提示:捕捉一個異常並且不做任何事情,甚至不記錄它,但很少是一個好主意。 – 2014-09-19 14:33:54

+0

在我的瀏覽器中的httpUrl給了我一個白頁「HTTP/1.1 200 OK日期:19.09.2014 TIME:16:32:58 CET」。 好吧,我將不得不嘗試如何記錄異常 - 給我幾分鐘。 – 2014-09-19 14:35:53

回答

0

你必須檢查trown的異常。我通常以這種方式登錄

try 
    { 
     //some cool stuff with webClient 
    } 
    catch (WebException ex) 
    { 
     using (var stream = ex.Response.GetResponseStream()) 
     using (var reader = new StreamReader(stream)) 
     { 
      var s = reader.ReadToEnd(); 

      throw new Exception(s, ex); 
     } 
    } 
    catch (Exception e) 
    { 
     throw e; 
    }