2012-01-24 3 views
1

iOS 5에서 JSON 개체를 사용하여 웹 서비스를 쿼리하려면 어떻게해야합니까? 여러 가지 방법을 시도해 보았지만 제대로 작동하지 않습니다. AFNetworking 또는 RestKit 프레임 워크가 가장 쉬운 경로 인 것으로 나타 났지만 경험이 없습니다. 나는 또한 iOS 개발에 익숙하지 않다.JSON 개체가있는 iOS 5 HTTP 쿼리

https://site.com/gis?QUERY={"ARGUMENTS":{"TO":{"OBJECT_TYPE":"BUILDING","OBJECT_ID":"1","TYPE":"IDENTIFIER"},"FROM":{"OBJECT_TYPE":"BUILDING","OBJECT_ID":"2","TYPE":"IDENTIFIER"},"PATHTYPES":["SIDEWALK"},"QUERYTYPE":"FINDPATH"} 

답변

7

는, URL 요청을 만들려면 다음 예를 참조하십시오

여기에 작동하는 예제 쿼리입니다. 이것은 json 데이터를 게시합니다. 귀하의 경우에는 GET http 메서드를 사용하므로 json 데이터를 게시 할 필요가 없으므로 간단히 URL에 포함 할 수 있습니다. 일부 변수 선언은 표시되지 않습니다.

NSArray *keys = [NSArray arrayWithObjects:@"longitude", @"latitude", nil]; 
NSArray *objects = [NSArray arrayWithObjects:longitude, latitude, nil]; 

NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

if([NSJSONSerialization isValidJSONObject:jsonDictionary]) 
{ 
    __jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:0 error:nil]; 
    __jsonString = [[NSString alloc]initWithData:__jsonData encoding:NSUTF8StringEncoding]; 
} 

// Be sure to properly escape your url string. 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:@"https://site.com...etc"]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody: __jsonData]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [__jsonData length]] forHTTPHeaderField:@"Content-Length"]; 

NSError *errorReturned = nil; 
NSURLResponse *theResponse =[[NSURLResponse alloc]init]; 
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&errorReturned]; 

if (errorReturned) { 
    // Handle error. 
} 
else 
{ 
    NSError *jsonParsingError = nil; 
    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&jsonParsingError]; 
} 
+0

__jsonData 및 __jsonString은 어떤 유형의 객체입니까? – nslocum

+0

NSData 및 NSString – mservidio