AFJSONRequestOperation 访问总是到fail回调的处理

用AFNetWorking框架中的AFJSONRequestOperation下载json数据是一直出错。

打断点跟踪后发现,每次都没有走到success语法块里面,而是直接走到failure语法块里面。

我想把failure语法块里面的错误信息打印出来

[cpp]  view plain copy
  1. failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {  
  2.                 NSLog(@"failure:%@",[error description]);  
  3.             }  

输出的结果是这样的

[html]  view plain copy
  1. failure:Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {(  
  2.     "text/json",  
  3.     "application/json",  
  4.     "text/javascript"  
  5. )}, got text/html" UserInfo=0x84849d0 {NSLocalizedRecoverySuggestion={"message":["用户名为空!"],"data":[null],"success":false}, AFNetworkingOperationFailingURLRequestErrorKey=<NSURLRequest http://192.168.0.99:8080/jlsj/ios_mobileLogin.action?mobileUserName=A&mobilePassword=A>NSErrorFailingURLKey=http://192.168.0.99:8080/jlsj/ios_mobileLogin.action?mobileUserName=A&mobilePassword=ANSLocalizedDescription=Expected content type {(  
  6.     "text/json",  
  7.     "application/json",  
  8.     "text/javascript"  
  9. )}, got text/html, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x8443230>}  

原来是缺少它需要的字符集,于是在前面加上

[cpp]  view plain copy
  1. [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObjects:@"application/json", @"text/html", nil]];  
这下终于可以成功运行了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个常见的问题,我来为您提供一些参考。 首先,在支付宝支付完成后,支付宝会向您指定的回调地址发送一个 POST 请求,该请求会携带一些参数,例如订单号、交易状态等信息。 您需要在您的回调地址中编写代码来处理这些参数,并根据支付宝返回的交易状态来更新您的订单状态等操作。 以下是一个简单的示例代码,供您参考: ```java @RequestMapping("/notify") public String notify(HttpServletRequest request) throws Exception { Map<String, String> params = new HashMap<>(); Map<String, String[]> requestParams = request.getParameterMap(); for (String name : requestParams.keySet()) { String[] values = requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } params.put(name, valueStr); } // 验证签名 boolean signVerified = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY, CHARSET, SIGN_TYPE); if (signVerified) { // 处理您的业务逻辑 String outTradeNo = params.get("out_trade_no"); // 商户订单号 String tradeNo = params.get("trade_no"); // 支付宝交易号 String tradeStatus = params.get("trade_status"); // 交易状态 if (tradeStatus.equals("TRADE_SUCCESS")) { // 更新订单状态等操作 // ... } return "success"; // 返回成功响应 } else { return "fail"; // 返回失败响应 } } ``` 在上面的代码中,我们首先将回调请求中的参数解析为一个 Map 对象,然后使用支付宝提供的工具类 AlipaySignature 进行签名验证。 如果签名验证通过,我们就可以根据交易状态来处理我们的业务逻辑了。在这个示例中,我们只是简单地判断交易状态是否为 TRADE_SUCCESS,如果是,就更新订单状态。 最后,我们要返回一个成功或失败的响应给支付宝,让支付宝知道我们已经成功地处理回调请求。在本例中,我们只是简单地返回了一个字符串,但实际上您可能需要根据具体情况返回一个标准的 HTTP 响应码和消息体。 希望这个示例能够帮助到您,如果您有任何问题或需要进一步的帮助,请随时联系我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值