Отправка JSON-запроса на сервер? - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть следующий JSON для отправки запроса на сервер

{
    "name":"Home",
    "latitude":"45.5037078163837",
    "longitude":"-122.622699737549",
    "radius":"240"
}

, а URL для запроса:

  URL: https://api.geoloqi.com/1/place/create 

Я делаю такой запрос,

    NSString *urlString= @"https://api.geoloqi.com/1/place/create ";
NSURL* url = [[NSURL alloc] initWithString:urlString];
NSString *jsonRequest = @"{\"name\":\"veer\",\"latitude\":\"45.5037078163837\",\"longitude\":\"-122.622699737549\,\"radius\":\"500\ }";

jsonRequest = [self JSONString:jsonRequest];

NSData* requestData = [jsonRequest dataUsingEncoding:NSUTF8StringEncoding];
NSString* requestDataLengthString = [[NSString alloc] initWithFormat:@"%d", [requestData length]];

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:requestData];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:requestDataLengthString forHTTPHeaderField:@"Content-Length"];
[request setTimeoutInterval:30.0];
[url release];
[requestData release];
[requestDataLengthString release];

NSURLConnection *m_URLConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[request release];

Что не так с этим запросом?

Ответы [ 3 ]

3 голосов
/ 23 ноября 2011

Кажется, что в вашей строке JSON отсутствуют 2 кавычки после значений долготы и радиуса:

Изменение

NSString *jsonRequest = @"{\"name\":\"veer\",\"latitude\":\"45.5037078163837\",\"longitude\":\"-122.622699737549\,\"radius\":\"500\ }";

К этому

NSString *jsonRequest = @"{\"name\":\"veer\",\"latitude\":\"45.5037078163837\",\"longitude\":\"-122.622699737549\",\"radius\":\"500\" }";

0 голосов
/ 14 февраля 2014

URL веб-сервиса, по которому вы пытаетесь перейти, похоже, использует SSL.Возможно, вам потребуется поместить токен доступа в заголовок запроса, чтобы получить правильный ответ от веб-службы.

Пожалуйста, см. Ссылку для аутентификации: https://developers.geoloqi.com/api/authentication

0 голосов
/ 23 ноября 2011

Из вашего вопроса не ясно, в чем ваша проблема с этим.

В любом случае, вы также делаете:

[m_URLConnection start];

после создания соединения?

В качестве альтернативы, вы можете создать соединение, используя

[– initWithRequest:delegate:startImmediately:][1]

, который позволяет указать, что загрузка данных должна начаться немедленно.

Также рассмотрите возможность использования [+sendAsynchronousRequest:queue:completionHandler:][2] в качестве удобного конструктора для вашего соединения.

...