我正在尝试使用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,无法解决这个问题,也找不到任何好的文档。我做错了什么?
答案 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) {