我有这个简单的飞镖片段:
import 'package:http/http.dart' as http;
Client _http = new BrowserClient();
final response = await _http
.post(url, headers: someHeader, body: someValue);
当前请求的服务器返回Bad Request 400
响应。我希望能够出于某些原因获取状态代码。但是一旦_http.post
被调用,我就会收到此错误:
POST http://localhost/path 400 (Bad Request)
将块放在try/catch
中没有用,因为捕获的异常是ClientException
,它没有关于status-code和response-body的信息(这里很重要)。如何处理状态代码而不抛出异常?
更新
_http.post()
致电后我有这个片段:
if (response.statusCode == 400) {
// manage bad request
}
但response
为null
,因此无法在此处访问statusCode
。
更新2:
我在服务器上收到请求,可以在服务器上跟踪。正如我所提到的,服务器正在发送400 Bad Request
响应,并且工作正常。但是在Dart中获得响应会导致错误。
答案 0 :(得分:0)
Response
对象有一个字段statusCode
,您可以在其中获取响应的状态代码。
你可以这样做:
final response = await _http
.post(url, headers: someHeader, body: someValue);
if (response.statusCode == 400) {
// manage bad request
}
答案 1 :(得分:0)
我怀疑网址,标题或正文无论如何都是无效的。 (例如标题中的无效字符)。该请求实际上并未发送到服务器,因此正在抛出ClientException
而不是给您回复。