来自 WebClient 的 BadRequest 消息
BadRequest Message from WebClient
当我通过 Postman 拨打电话时,我收到一条很好的消息说 "failure in user creation and a 400 Bad Request"。
(附截图)。
当我运行我的c#代码时,它直接跳转到一个异常,但是异常消息不是我在Postman中看到的。这是我的 C# 代码。
try
{
var wc = new WebClient();
wc.Headers.Add("Content-Type", "application/json");
wc.BaseAddress = ServiceUrl;
wc.Encoding = Encoding.UTF8;
byte[] ret = wc.UploadData($"{ServiceUrl}/api/CreateUser",
"POST", System.Text.Encoding.UTF8.GetBytes(userjson));
var resp = System.Text.Encoding.UTF8.GetString(ret);
Console.WriteLine(resp);
}
catch (WebException e)
{
Console.WriteLine("This program is expected to throw WebException on successful run."+
"\n\nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError)
{
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
Console.WriteLine("Status Method : {0}", ((HttpWebResponse)e.Response).Method);
}
}
我从我的代码中得到的错误信息是
Exception Message :The remote server returned an error: (400) Bad Request.
我想在我的 C# 代码中得到同样的消息。
我已经探索了 System.Net.Http 中的 HttpClient 并且它有效,但是 将涉及更改大量代码在这个应用程序中。我有点不愿意那样做。
使用 WebClient
你应该能够得到这样的响应信息:
using (WebClient client = new WebClient())
{
try
{
string data = client.DownloadString("https://localhost:44357/weatherforecast");
}
catch (WebException ex)
{
using (StreamReader r = new StreamReader(ex.Response.GetResponseStream()))
{
string response = r.ReadToEnd(); // access the reponse message
}
}
}
我简化了代码(使用 HTTP GET
)以专注于您需要的内容。
当我通过 Postman 拨打电话时,我收到一条很好的消息说 "failure in user creation and a 400 Bad Request"。
(附截图)。
当我运行我的c#代码时,它直接跳转到一个异常,但是异常消息不是我在Postman中看到的。这是我的 C# 代码。
try
{
var wc = new WebClient();
wc.Headers.Add("Content-Type", "application/json");
wc.BaseAddress = ServiceUrl;
wc.Encoding = Encoding.UTF8;
byte[] ret = wc.UploadData($"{ServiceUrl}/api/CreateUser",
"POST", System.Text.Encoding.UTF8.GetBytes(userjson));
var resp = System.Text.Encoding.UTF8.GetString(ret);
Console.WriteLine(resp);
}
catch (WebException e)
{
Console.WriteLine("This program is expected to throw WebException on successful run."+
"\n\nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError)
{
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
Console.WriteLine("Status Method : {0}", ((HttpWebResponse)e.Response).Method);
}
}
我从我的代码中得到的错误信息是
Exception Message :The remote server returned an error: (400) Bad Request.
我想在我的 C# 代码中得到同样的消息。
我已经探索了 System.Net.Http 中的 HttpClient 并且它有效,但是 将涉及更改大量代码在这个应用程序中。我有点不愿意那样做。
使用 WebClient
你应该能够得到这样的响应信息:
using (WebClient client = new WebClient())
{
try
{
string data = client.DownloadString("https://localhost:44357/weatherforecast");
}
catch (WebException ex)
{
using (StreamReader r = new StreamReader(ex.Response.GetResponseStream()))
{
string response = r.ReadToEnd(); // access the reponse message
}
}
}
我简化了代码(使用 HTTP GET
)以专注于您需要的内容。