-1

我试图解析一些 JSON。为简单起见,我将使用 github 上的默认示例进行解释:运行时:

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request success:^(
    NSURLRequest *request, NSHTTPURLResponse     *response, id JSON) {
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);
    } failure:nil];

[operation start];

我得到了正确的输出记录。但是,当我将示例的内容(基本上是 1 个元素)复制到 txt 或 html 文件(因此 URLWithString 获取 @"http://my server address/file.txt")时,将其放在我的测试服务器上并尝试从那里赞美,我没有输出。这有什么问题?谢谢你的时间!

(注意:如果我去 http:// 我的服务器地址 /file.txt 我可以清楚地看到那里的内容,所以这不是问题)

编辑:按照建议,内容是:“{“origin”:“10.44.119.100”}”

4

2 回答 2

1

您的问题可能与您将内容作为文本文件 ( .txt) 而不是 JSON ( Content-Type: application.json/.json扩展名) 提供的事实有关。AFNetworking 严格遵守 HTTP 标准,以防止出现意外行为。在您的服务器上设置正确的Content-Type标头,或者(作为黑客)AFJSONRequestOperation +addAcceptableContentTypes:添加text/plain.

作为元注释:在 Stack Overflow 上提问时,细节很重要。如果您发布了您在控制台中看到的错误,那么确定问题所在会容易得多。同样,近似代码不是实际代码;如果您有问题,请具体说明发生了什么。细节很重要。

于 2013-02-25T18:32:49.163 回答
-1

您应该先对 json 数据进行编码,然后将其写入文本文件,当您从文件中读取数据时...首先解码数据...

编辑: 用简单的http替换JSON操作并检查你是否能够从那里获取数据......如果你是那么JSONOperation基本上是在寻找不在文本文件中的json响应......我猜

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];

[operation setUploadProgressBlock:^(NSInteger bytesWritten,long long totalBytesWritten,long long totalBytesExpectedToWrite)
 {

     NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);

 }];

[operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{


    NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
    NSLog(@" Success %@",str);
   // id response = AFJSONDecode(responseObject, nil);

    [self requestSucceed:response];
}
                                  failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
    NSLog(@"error: %@",  operation.responseString);
}];
于 2013-02-25T13:51:05.567 回答