再会!
我有这个代码发送一个 POST 请求并从服务器接收响应:
private readonly WebClient wc = new WebClient();
public async Task<string> POST(string URI, string body, string AccessToken = null)
{
try
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
if (AccessToken != null)
{
wc.Headers.Add("Authorization", AccessToken);
}
string result = await wc.UploadStringTaskAsync(URI, body);
return result;
}
catch (WebException we)
{
log.WriteLog("RaidBoss", we.ToString());
return null;
}
}
对于每个不同于 200 的响应,都会触发异常。您可以从中提取响应代码,但不能提取响应中发送给我的 JSON 代码。
如何处理所有响应(任何代码都不会引发异常)?您可能需要使用不同的方式来发送 POST。
GET 请求也存在同样的问题:
public async Task<string> GET(string URI, string Params = "", string AccessToken = null)
{
try
{
HttpClient hc = new HttpClient();
if (AccessToken != null)
{
hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(AccessToken);
}
Task<Stream> result = hc.GetStreamAsync(URI + "?" + Params);
Stream vs = await result;
StreamReader am = new StreamReader(vs);
string res = await am.ReadToEndAsync();
return res;
}
catch (Exception ex)
{
return null;
}
}
在这种情况下提示在哪里挖掘。我会非常感谢!

对于 200 以外的响应,可能没有任何 json。你需要往职责分离的方向去挖掘:访问站点的单独操作,解析json的单独操作。传输层分开,消息解码分开。
在基类中——请求的实际执行(抛出一个字符串——接收到一个字符串):
在api中已经可以操作TRequest和TResponse:
感谢@vitidev 帮助我解决这个问题。
结果是这样的:
邮政:
得到:
POST 和 GET 响应代码可以在函数本身内部获取:
还有很多很多不同的代码
HttpStatusCode