我必须将一个文件(使用我以前的代码生成的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"用我的浏览器...嗯。
答案 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;
}