AFNetworking 2.0 post 运行不正常

AFNetworking 2.0 post not working well

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

这是目标代码:

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

Wnen 我 运行 代码,发生错误:

Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x7febc2d33560 {com.alamofire.serialization.response.error.response= { URL: http://127.0.0.1:5000/test } { status code: 200, headers { "Content-Length" = 12; "Content-Type" = "text/html; charset=utf-8"; Date = "Mon, 02 Feb 2015 01:10:55 GMT"; Server = "Werkzeug/0.9.6 Python/2.7.6"; } }, NSErrorFailingURLKey=http://127.0.0.1:5000/test, com.alamofire.serialization.response.error.data=<7b227661 6c756522 3a20317d>, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}

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

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

您返回了 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