通过WebClient上传文件

时间:2014-09-19 14:29:19

标签: c# upload webclient

我必须将一个文件(使用我以前的代码生成的XML)上传到一个Web服务,该服务提供了以下信息:

网址(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

问题是我在运行后立即获得第一次机会异常("类型' System.Net.WebException'发生在System.dll"中的第一次机会异常)使用UploadFile命令的行。 我可以使用浏览器在给定端口上打开给定的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 个答案:

答案 0 :(得分:0)

您必须检查抛出的异常。我通常以这种方式登录

    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;
    }