AFNetworking 2.0 发布效果不佳

Posted

技术标签:

【中文标题】AFNetworking 2.0 发布效果不佳【英文标题】:AFNetworking 2.0 post not working well 【发布时间】:2015-03-31 22:55:20 【问题描述】:

我使用 AFNetworking 将一些 JSON 数据发布到服务器,服务器将响应相同的 JSON 数据。

这里是objc代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[manager POST:@"http://127.0.0.1:5000/test" parameters:@@"value":@(1) success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"JSON:%@", responseObject);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"%@",error);
];

服务器代码(使用 Flask):

@app.route('/test', methods = ['POST'])
def test():
    resultJson = json.dumps(request.json)
    response = make_response(resultJson)
    return response

我运行代码,出现错误:

错误域=com.alamofire.error.serialization.response Code=-1016 “请求失败:不可接受的内容类型:文本/html” UserInfo=0x7febc2d33560 com.alamofire.serialization.response.error.response= URL :http://127.0.0.1:5000/test 状态码:200,标题 “内容长度”= 12; “内容类型”=“文本/html;字符集=utf-8”; 日期 =“星期一,2015 年 2 月 2 日 01:10:55 GMT”; 服务器 = "Werkzeug/0.9.6 Python/2.7.6"; , NSErrorFailingURLKey=http://127.0.0.1:5000/test, com.alamofire.serialization.response.error.data=, NSLocalizedDescription=请求失败:不可接受的内容类型:文本/html

我不明白为什么状态码是 200,因为有错误,为什么错误消息显示 Content-Type 是 text/html,我在我的 Objective-C 中将 Content-Type 设置为 application/json上面的代码。

但是,当我使用 VisualJSON(一个 Mac 应用程序)时,一切正常。

【问题讨论】:

【参考方案1】:

您返回 JSON 数据作为响应,但您设置 Content-Type 的假设不正确。创建一个将 mimetype 设置为“application/json”的响应实例。

from flask import request, json

@app.route('/test', methods=['POST'])
def test():
    data = json.dumps(request.get_json())
    resp = app.response_class(data, mimetype='application/json')
    return resp

【讨论】:

以上是关于AFNetworking 2.0 发布效果不佳的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 参数字典不适用于 GET 请求

AFNetworking 2.0 POST 请求无法快速工作

AfNetworking 2.0 发布问题

Afnetworking 2.0 发布方法错误

在 Afnetworking 2.0 中取消发布请求

AFNetworking 2.0 JSON 解析