Изменена кодировка параметров в AFJSONRequestOperation для запроса API поиска Bing

Я пытаюсь выполнить поиск изображений с помощью Bing Search API, но он плохо работает с символами Юникода

NSDictionary *bingParams = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"'image'", @"Sources",
                            [NSString stringWithFormat:@"'%@'",[[searchBar text] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]], @"Query",
                            @"'Size:Medium'", @"ImageFilters",
                            @"json", @"$format",
                            @"50", @"$top",
                            nil];
NSLog(@"%@",[bingParams objectForKey:@"Query"]);

if (!_httpClient) {
    _httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"https://api.datamarket.azure.com"]];
    [_httpClient clearAuthorizationHeader];
    [_httpClient setParameterEncoding:AFJSONParameterEncoding];
    [_httpClient setAuthorizationHeaderWithUsername:BING_SEARCH_KEY password:BING_SEARCH_KEY];
}

NSMutableURLRequest *searchRequest = [_httpClient requestWithMethod:@"GET" path:@"/Bing/Search/v1/Composite" parameters:bingParams];
[searchRequest setCachePolicy:NSURLRequestReloadIgnoringCacheData];
[searchRequest setTimeoutInterval:30.0];
AFJSONRequestOperation *searchOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:searchRequest
                                                                                        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
                                                                                            NSLog(@"%@",JSON);    
                                                                                        }
                                                                                        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){
                                                                                            NSLog(@"%@",[error localizedDescription]);
                                                                                        }];
[_httpClient enqueueHTTPRequestOperation:searchOperation];

первый NSLog печатает следующее:

`%E6%97%A5`

Второй NSLog печатает очень долго, но есть пара ключ-значение, которую я хочу выделить

"__metadata" =                 {
  type = ExpandableSearchResult;
  uri = "https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Composite?ImageFilters='Size:Medium'&Query='\U65e5'&Sources='image'&$skip=0&$top=1";
};

Заметка Query='\U65e5', который отличается от '%E6%97%A5'

Мне интересно, что я делаю не так? или это проблема с поисковым API, который находится вне моего контроля?

0 ответов

Другие вопросы по тегам