因此,我正在使用的API有时会在请求失败时在响应正文中发送错误消息。它位于response.data
。有时它是JSON,有时候它是一个字符串。我使用validate
方法,以便在发生错误时result.value
为nil
。
有没有办法让Alamofire将数据从NSData序列化为字符串,或者将JSON序列化为[ String : AnyObject ]
,就像响应成功一样?
我想继续使用验证方法。
编辑: 这是我在Alamofire GitHub项目上开始的功能请求的链接。
答案 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>
);
});
}