在dart中处理非Ok请求

时间:2018-03-12 21:46:53

标签: dart angular-dart dart-http

我有这个简单的飞镖片段:

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
}

responsenull,因此无法在此处访问statusCode

更新2: 我在服务器上收到请求,可以在服务器上跟踪。正如我所提到的,服务器正在发送400 Bad Request响应,并且工作正常。但是在Dart中获得响应会导致错误。

2 个答案:

答案 0 :(得分:0)

Response对象有一个字段statusCode,您可以在其中获取响应的状态代码。 你可以这样做:

final response = await _http
  .post(url, headers: someHeader, body: someValue);
if (response.statusCode == 400) {
  //  manage bad request
}

答案 1 :(得分:0)

我怀疑网址,标题或正文无论如何都是无效的。 (例如标题中的无效字符)。该请求实际上并未发送到服务器,因此正在抛出ClientException而不是给您回复。