AFNetworkingErrorDomain代码= -1011"请求失败:内部服务器错误(500)"

时间:2014-06-12 15:49:57

标签: ios afnetworking-2

我正在使用Afnetwork 2.我是IOS开发的新手。我想使用POST方法连接一些API。

在这个API中我也想设置Header。

这是我的代码

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];

    manager.responseSerializer.acceptableContentTypes =[manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
    [manager.requestSerializer setValue:token forHTTPHeaderField:@"X-Auth-Token"];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];

    [manager POST:@"api/v1/contact-group/add/" parameters:params

    success:^(NSURLSessionDataTask *task, id responseObject) {


    } failure:^(NSURLSessionDataTask *task, NSError *error) {


    }];

当我使用此代码时,我收到类似

的错误
Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: internal server error (500)" UserInfo=0xa8b0930 {NSErrorFailingURLKey=http://xxxxxx.info/api/v1/contact-group/add, NSLocalizedDescription=Request failed: internal server error (500), NSUnderlyingError=0xa88cb00 "Request failed: unacceptable content-type: text/html", AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xaa5a940> { URL: http://xxxxxx.info/api/v1/contact-group/add } { status code: 500, headers {
    "Cache-Control" = "no-cache";
    Connection = close;
    "Content-Type" = "text/html";
    Date = "Thu, 12 Jun 2014 15:39:31 GMT";
    Server = Apache;
    "Set-Cookie" = "laravel_session=.....";
    "X-Frame-Options" = SAMEORIGIN;
    "X-Powered-By" = "PHP/5.3.28, PleskLin";
} }}

我参考了很多文档和stackoverflow问题和答案。他们给出了很多答案。但不幸的是我没有得到解决方案。请帮帮我。

请指出我的错误。

注意:当我使用不带标题时,它将返回“无效标题”。它将返回正确的错误消息。

修改

服务器期待格式 方法POST

input
{
    "blog_guid": "k39453050345j",
    "contact_groups": [
        "er234we232",
        "tet343i49ti3409t33"
    ]
}

服务器响应

{
    "error": false,
    "code": 200,
    "message": "Success"
}

我正在发送像这样的参数

 NSMutableDictionary *params = [[NSMutableDictionary alloc]
                                   initWithObjects:@[guid, groupName, description]
                                   forKeys:@[APISEND_CONTACTGROUPKEY, APISEND_CONTACTGROUPNAME, APISEND_CONTACTGROUPDESCRIPTION]];

2 个答案:

答案 0 :(得分:1)

根据您在编辑后的版本中添加的元素,您似乎并未以服务器预期的格式发送JSON数据。

服务器期待一个包含blog_guidcontact_groups项的字典,后者本身就是一个字符串数组。您必须在自己的代码中仔细遵守这些要求。

在您的代码中,您发送的字词包含3个项目:guidgroupNamedescription。此外,组名没有数组。

尝试这样的事情:

NSArray *groupNames = [[NSArray alloc] initWithObjects:groupName];
NSMutableDictionary *params = [[NSMutableDictionary alloc]
                               initWithObjects:@[guid, groupNames]
                               forKeys:@[APISEND_BLOGGUID, APISEND_CONTACTGROUPKEY]];

另外,请检查APISEND_CONTACTGROUPKEY是否等于@"contact_groups"APISEND_BLOGGUID等于@"blog_guid"

为了帮助您进行调试以防它仍然无法正常工作,请尝试在AFNetworking将params变量序列化为JSON后将其打印到控制台,并检查它是否类似您在问题中描述的格式(有效的格式)。

答案 1 :(得分:1)

我觉得你还好。您的服务器向您的请求返回错误。代码500通常表示内部错误,例如未处理的异常。所以它绝对与客户无关。