AFHTTPRequest результат NULL (хотя я вижу JSON в браузере)
Я использую запрос GET для получения данных JSON.
Звонок выглядит так:
-(void)getJSON{
//Where request is going
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://localhost:1234"]];
//Parameters
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET"
path:@"/test"
parameters:nil];
//Init operation
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];
//Set completion block
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//Handle response
NSLog(@"Request succesful");
NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Code to execute if failed
NSLog(@"Error: %@", error);
}];
//Initiate request
[operation start];
}
Когда я запрашиваю в своем браузере, я получаю это:
{"Object 2":"Lemon","Object 1":"Chicken"} //http://localhost:1234/test
Этот ответ отправляется моим методом на сервер (в Java):
/**
* Sends reply back to client
* @throws Exception
*/
private void sendResponse() throws Exception{
HashMap<String, String> mapResponse = new HashMap<String, String>();
mapResponse.put("Object 1", "Chicken");
mapResponse.put("Object 2", "Lemon");
//Convert to JSON
Gson gson = new Gson();
String json = gson.toJson(mapResponse);
//write out as JSON
responseToClient.writeBytes(json);
}
Не уверен, почему xcode не обрабатывает ответ... Когда я смотрю на значение в отладчике, он говорит responseObject = x0000000 (null)
1 ответ
Решение
Добавьте заголовки HTTP-ответа при отправке данных назад. По крайней мере Content-Type
и, предпочтительно, также включают Content-Length
, Это позволит классам AF понимать, что делать с полученными данными.