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 понимать, что делать с полученными данными.

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