验证失败时Alamofire Parse响应数据

时间:2016-09-05 02:41:05

标签: alamofire

因此,我正在使用的API有时会在请求失败时在响应正文中发送错误消息。它位于response.data。有时它是JSON,有时候它是一个字符串。我使用validate方法,以便在发生错误时result.valuenil

有没有办法让Alamofire将数据从NSData序列化为字符串,或者将JSON序列化为[ String : AnyObject ],就像响应成功一样?

我想继续使用验证方法。

编辑: 这是我在Alamofire GitHub项目上开始的功能请求的链接。

https://github.com/Alamofire/Alamofire/issues/1459

2 个答案:

答案 0 :(得分:4)

目前没有。我现在正在Alamofire 4中实现这个功能。在Alamofire 3中,如果您收到验证错误,则必须自己解析response.data。在Alamofire 4中,您至少可以在验证时访问response.data,并且可以自定义验证生成的Error

最终解决方案最有可能的是,如果您知道会出现错误(检查响应状态代码和标题),则可以检入验证。然后根据错误类型,您可以解析response.data以从服务器中提取错误消息并从验证中抛出非常具体的错误。这很可能是新系统允许的。通过这种方式,您可以在验证中识别OAuth2访问令牌错误并抛出您自己的自定义错误,而不必使用复杂的响应序列化系统来执行此操作。

答案 1 :(得分:0)

快捷键4

如果遇到错误,可以尝试将响应数据解析为字符串或json。

  Object.keys(this.state.benefits).map(b => {
    return (
      <div key={this.state.benefits[b]._id} className="wrap">
        <input
          className="check"
          type="checkbox"
          onChange={e => this.nastyHandler(e, this.state.benefits[b])}
        />
        <label>{this.state.benefits[b].name}</label>
        {this.state.formContract.benefits[b].value && (
          <React.Fragment>
            <label>Quantity</label>
            <input
              onChange={e => (this.state.benefits[b].field = e.target.value)}
            />
            <span> </span>
          </React.Fragment>
        )}
      </div>
    );
  });
}