0

UNIRest API を使用して、この get リクエストを iPhone アプリケーションで実行しようとしています。

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 を知りませんし、適切なドキュメントを見つけることもできません。私は何を間違っていますか?

4

1 に答える 1

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" のスペースは "The%20Legacy" に変換されません。https://github.com/Mashape/unirest-obj-cに問題を追加する前にテスト ケースを実行します。

アップデート

間隔をあけた値の TestCase を追加しているときにのみ (これは正しく機能します)、GET を使用する必要があるのに POST を使用していることに気付きました。

UNIHTTPJsonResponse* response = [[UNIRest get:^(UNISimpleRequest* request) {
于 2014-05-22T07:40:12.317 に答える