XML 형식 또는 JSON 형식으로 데이터를 반환하는 서버에서 실행되는 웹 서비스가 있습니다. JSON 형식을 요청했지만 HTTP Post 메서드를 사용하고 싶습니다.iPhone 응용 프로그램에 대한 응답으로 JSON 객체를 가져 오기위한 HTTP 게시물 요청을 어떻게 작성합니까?
도움을 주시면 감사하겠습니다.
미리 감사드립니다.
XML 형식 또는 JSON 형식으로 데이터를 반환하는 서버에서 실행되는 웹 서비스가 있습니다. JSON 형식을 요청했지만 HTTP Post 메서드를 사용하고 싶습니다.iPhone 응용 프로그램에 대한 응답으로 JSON 객체를 가져 오기위한 HTTP 게시물 요청을 어떻게 작성합니까?
도움을 주시면 감사하겠습니다.
미리 감사드립니다.
이 JSON POST 요청에 대한 작업, TouchJSON 프레임 워크는 JSON, 덕분에 '슈'를 구문 분석에 사용되는 코드입니다.
NSArray *keys = [NSArray arrayWithObjects:@"username", @"password", @"preference", @"uid", nil];
NSArray *objects = [NSArray arrayWithObjects:@"accuser", @"accpass", @"abc_region", @"100", nil];
NSDictionary *theRequestDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSURL *theURL = [NSURL URLWithString:@"http://url.com/request.php"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0f];
[theRequest setHTTPMethod:@"POST"];
[theRequest setValue:@"application/json-rpc" forHTTPHeaderField:@"Content-Type"];
NSString *theBodyString = [[CJSONSerializer serializer] serializeDictionary:theRequestDictionary];
NSLog(@"%@", theBodyString);
NSData *theBodyData = [theBodyString dataUsingEncoding:NSUTF8StringEncoding];
// NSLog(@"%@", theBodyData);
[theRequest setHTTPBody:theBodyData];
NSURLResponse *theResponse = NULL;
NSError *theError = NULL;
NSData *theResponseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];
NSString *theResponseString = [[[NSString alloc] initWithData:theResponseData encoding:NSUTF8StringEncoding] autorelease];
NSLog(theResponseString);
NSDictionary *theResponseDictionary = [[CJSONDeserializer deserializer] deserialize:theResponseString];
NSLog(@"%@", theResponseDictionary);
NSString *theGreeting = [theResponseDictionary objectForKey:@"greeting"];
[self setValue:theGreeting forKey:@"greeting"];
정확히 어떤 질문인지 확실하지 않습니다. 그러나 시작하는 데 도움이되는 google "TouchJSON".
어떻게하면 TouchJSON을 사용할 수 있습니까? –
하지만 같은 것에 대해 방법 :
CFURLRef url = CFURLCreateWithString(NULL, CFSTR("http://example.com/post"), NULL);
CFHTTPMessageRef msg = CFHTTPMessageCreateRequest(
NULL,
CFSTR("POST"),
url,
kCFHTTPVersion1_1);
const char *body = "key=value&id=30293";
CFDataRef bodyData = CFDataCreate(NULL, body, strlen(body));
CFHTTPMessageSetBody(msg, bodyData);
CFReadStreamRef myReadStream = CFReadStreamCreateForHTTPRequest(NULL, myRequest);
CFReadStreamOpen(myReadStream);
CFHTTPMessageRef myResponse = CFReadStreamCopyProperty(
myReadStream,
kCFStreamPropertyHTTPResponseHeader);
//
// Handle myResponse
//
CFReadStreamClose(myReadStream);
CFRelease(myReadStream);
CFRelease(bodyData);
CFRelease(msg);
CFRelease(url);
정말 카본 틱 솔루션입니다. 아이폰에서 전혀 잘 작동하지 않을 것입니다. –
그건 Carbon이 아니라 Core Foundation입니다. CFNetwork는 iOS에서 잘 작동합니다. 나는 코코아 솔루션에 그것을 선호하지는 않지만 언뜻보기에는이 코드에 아무런 문제가 없다. 핵심 재단은 매우 유용합니다. –
"otherRequest"사전의 목적은 무엇입니까? 사용하지 않는 것 같습니다. –
삭제되었습니다. –