Objective-C UNIRest对GET请求没有回应

时间:2014-05-13 18:19:24

标签: objective-c json unirest

我正在尝试使用UNIRest API在iPhone应用程序中运行此get请求

https://api.guildwars2.com/v1/guild_details.json?guild_name=The%20Legacy

我正在运行的代码就是这个

NSDictionary* headers = @{@"accept": @"application/json"};
NSDictionary* parameters = @{@"guild_name": @"The Legacy"};

UNIHTTPJsonResponse* response = [[UNIRest post:^(UNISimpleRequest* request) {
    [request setUrl:@"https://api.guildwars2.com/v1/guild_details.json"];
    [request setHeaders:headers];
    [request setParameters:parameters];
}] asJson];

NSDictionary *guildInformation = response.body.JSONObject;

NSLog(@"response length: %lu", (unsigned long)[guildInformation.allValues count]);

for(NSString *key in [guildInformation allKeys]) {
    NSLog(@"key: %@     object: %@", key, [guildInformation objectForKey:key]);
}

我曾希望for循环会显示响应。但是当你看到唯一的输出是

时,我似乎根本得不到任何回应
response length: 0

我不太了解UNIRest API,无法解决这个问题,也找不到任何好的文档。我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题似乎是参数值未正确编码。

作为一种快速解决方法,您只需传递整个构建的URL。

UNIHTTPJsonResponse* response = [[UNIRest post:^(UNISimpleRequest* request) {
    [request setUrl:@"https://api.guildwars2.com/v1/guild_details.json?guild_name=The%20Legacy"];
    [request setHeaders:@{@"accept": @"application/json"}];
}] asJson];

@“The Legacy”中的空格可能不会转换为“%20Legacy”,在将问题添加到https://github.com/Mashape/unirest-obj-c之前会做一个测试用例

更新

只有当我为间隔值添加一个TestCase(它才能正常工作)时,我发现你在使用POST时应该使用GET。

UNIHTTPJsonResponse* response = [[UNIRest get:^(UNISimpleRequest* request) {