将JSON请求发送到服务器?

时间:2011-11-23 09:08:44

标签: iphone json post nsmutableurlrequest

我有以下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 个答案:

答案 0 :(得分:3)

您的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\" }";

答案 1 :(得分:0)

从您的问题中不清楚您的问题是什么。

无论如何,你还在做什么:

[m_URLConnection start];

创建连接后?

或者,您可以使用

创建连接

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

允许您指定数据加载应立即开始。

另外,请考虑使用[+sendAsynchronousRequest:queue:completionHandler:][2]作为连接的便利构造函数。

答案 2 :(得分:0)

您尝试访问的Web服务URL似乎使用SSL。您可能需要将访问令牌放入请求标头中,以便从Web服务获得正确的响应。

请参阅身份验证链接: https://developers.geoloqi.com/api/authentication