rest - AFNetworking 结果与 CURL 不同

标签 rest curl ios6 afnetworking

我正在构建一个带有 CakePHP 后端的 REST API。我正在尝试获取可以在 iOS 6.1 中使用 AFNetworking 进行解析的 JSON 响应,但当我尝试使用 AFNetworking 访问我的 API URL 时,出现错误。

这是对 AFNetworking 的有问题的调用:

[self postPath:@"/marks/markfav/1162" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    dispatch_async(dispatch_get_main_queue(), ^{
        if (DEMO_LOGGING) NSLog(@"Done refreshing");
    });
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"Request Failed with Error: %@", error.userInfo);
    });
}];

这是错误转储的结果:

2013-06-05 00:19:35.018 ToWatchList[67945:c07] Request Failed with Error: {
    AFNetworkingOperationFailingURLRequestErrorKey = "<NSMutableURLRequest http://towatchlist.com/marks/markfav/1162>";
    AFNetworkingOperationFailingURLResponseErrorKey = "<NSHTTPURLResponse: 0x8574250>";
    NSErrorFailingURLKey = "http://towatchlist.com/marks/markfav/1162";
    NSLocalizedDescription = "Expected status code in (200-299), got 500";
    NSLocalizedRecoverySuggestion = "{\"name\":\"An Internal Error Has Occurred.\",\"message\":\"\\/\"}";
}

我非常确定 PHP 后端工作正常,因为我可以使用curl 来访问它并获得预期的结果(请注意,我访问的 URL 与上面的错误相同,都是使用 POST 请求):

$ curl -i --request POST http://towatchlist.com/marks/markfav/1162
HTTP/1.1 200 OK
Date: Wed, 05 Jun 2013 07:21:46 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.6
Set-Cookie: CAKEPHP=ijmosqrl26cao4jv8vqlt15sa6; expires=Wed, 05-Jun-2013 11:21:46 GMT; path=/; HttpOnly
Content-Length: 43
Content-Type: application/json; charset=UTF-8

{"result":"0","info":"Invalid Permissions"}

我在同一个文件中有另一个有效的 AFNetworking 调用:[self getPath:@"/marks/data.json"parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) (它通过curl 和在iOS 中都能正常工作,您可以使用curl -i http://towatchlist.com/marks/data.json 来实现它。

所以我不明白为什么我在第一次 AFNetworking 调用时得到奇怪的结果......我如何让它像命令行上的curl一样?

PS:对于后台,通过使用我的基本 URL 调用此函数来设置 AFNetworking 来进行一些基本设置:

- (id)initWithBaseURL:(NSURL *)url
{
    self = [super initWithBaseURL:url];
    if(!self)
        return nil;
    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];
    [self setDefaultHeader:@"Accept" value:@"application/json"];
    [self setParameterEncoding:AFJSONParameterEncoding];
    [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];
    return self;
}

最佳答案

您应该尝试使用最新版本的 AFNetworking。我刚刚使用版本 1.3.0 进行了测试,一切都按预期工作,即使用 { info = "Invalid Permissions"; 调用 success block ;结果=0; } NSDictionary 作为响应对象。

关于rest - AFNetworking 结果与 CURL 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869875/

相关文章:

java - Jersey 客户错误请求

python - CCXT okex5 掉期合约 - 参数 posSide 错误

php - CURL 正在返回垃圾

html - iPod touch iOS6 - 具有大背景图像的元素显示为空白

Javascript/REST/Activiti - 我在 XMLHttpRequest 中做错了什么?

python - Bitfinex 数据 API

json - 从 curl 请求中提取 token 并在另一个 shell 命令中使用

bash - 如何在 bash curl 命令中使用提示中的变量?

objective-c - 创建自定义 UITableViewCell

iphone - 如何以编程方式获取失败/掉线的调用信息?