我正在寻找C#HTTP客户端,它不会抛出,当它得到一个HTTP错误(404例如)。 这不仅仅是一个风格问题;它完全有效的非2xx答复有一个身体,但我不能得到它,如果HTTP堆栈抛出时做一个GetResponse()http客户端,不会抛出错误
1
A
回答
3
所有返回Task<HttpResponseMessage>
的System.Net.Http.HTTPClient
方法不是扔在任何HttpStatusCode上。他们只会抛出超时,取消或无法连接到网关。
0
实现一个包装HttpClient的类是什么?
让它实现委托给客户端对象的所需方法,并尝试/捕获这些委托方法中的例外。
class MyClient
{
HttpClient client;
[...]
public String WrappedMethodA()
{
try {
return client.MethodA();
} catch(Exception x) {
return ""; // or do some other stuff.
}
}
}
实施自己的客户端后,您将摆脱这些例外。
如果你需要一个HttpClient的实例,从HttpClient的继承和重写它的方法是这样的:
public String WrappedMethodA()
{
try {
return base.MethodA(); // using 'base' as the client object.
} catch(Exception x) {
return ""; // or do some other stuff.
}
}
2
如果您使用的是System.Net.Http HttpClient的,你可以做这样的事情:
using (var client = new HttpClient())
using (var response = await client.SendAsync(request))
{
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStreamAsync();
// You can do whatever you want with the resulting stream, or you can ReadAsStringAsync, or just remove "Async" to use the blocking methods.
}
else
{
var statusCode = response.StatusCode;
// You can do some stuff with the status code to decide what to do.
}
}
由于在HttpClient的几乎所有方法都是线程安全的,我建议你真正创建一个静态的客户端代码中的其他地方使用,你是不是浪费内存的方式,如果你赚了很多的请求通过不断创造摧毁客户只有一个请求时埃可以做成千上万。
相关问题
- 1. Apache的HTTP客户端POST抛出500
- 2. Angular http客户端错误
- 3. SOAP UI生成JAVA客户端抛出MustUnderstandHeaders不明白错误
- 4. 是抛出内存不足的错误回客户端
- 5. RestEasy的客户端抛出抛出java.lang.ClassNotFoundException:com.sun.ws.rs.ext.RuntimeDelegateImpl
- 6. 为什么此Exredis客户端不会在on_exit回调中抛出错误?
- 7. 弹性搜索抛出客户端客户端搜索错误响应
- 8. ADFS MFA为某些用户/客户端PC抛出错误
- 9. Jmx客户端抛出InstanceNotFoundException
- 10. http客户端会话
- 11. 很简单的Node.js客户端抛出错误ENOBUFS的HTTP请求
- 12. 如何从服务器端抛出错误并从客户端捕获错误?
- 13. Spring WS客户端处理HTTP错误
- 14. HTTP客户端PUT请求错误
- 15. Jetty客户端http错误代码412
- 16. 蟒蛇HTTP客户端模块错误/
- 17. PHP SOAP客户端http头错误
- 18. Scala akka-http客户端超时错误
- 19. Apache Http客户端SSL证书错误
- 20. 错误提取HTTP头SOAP客户端
- 21. Node.io不会抛出错误?
- 22. Git的客户抛出错误
- 23. Twilio可编程语音客户端抛出31000错误
- 24. 将'Stream'传递给客户端抛出错误
- 25. PHP SOAP客户端抛出错误,而贝宝
- 26. Python Zeep客户端请求在xml异常中抛出错误
- 27. 从某些客户端访问时,wcf抛出错误
- 28. Google Admin SDK抛出错误的请求java客户端
- 29. 肥皂客户端不会抛出异常
- 30. 对于输入请求,Apache http客户端会在多部分上抛出错误
你可以得到的回应 http://stackoverflow.com/questions/692342/net-httpwebrequest-getresponse-raises-exception-when-http-status-code-400-ba HTTP ://stackoverflow.com/questions/18403846/httpwebrequest-accept-500-internal-server-error – CaldasGSM
@ CaldasGSM - 啊哈 - 我没有意识到 - ty – pm100