2008-11-05 2 views

답변

30

이 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"]; 
+1

"otherRequest"사전의 목적은 무엇입니까? 사용하지 않는 것 같습니다. –

+0

삭제되었습니다. –

3

정확히 어떤 질문인지 확실하지 않습니다. 그러나 시작하는 데 도움이되는 google "TouchJSON".

+0

어떻게하면 TouchJSON을 사용할 수 있습니까? –

0
오류와 메모리 누수 죄송

하지만 같은 것에 대해 방법 :

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); 
+0

정말 카본 틱 솔루션입니다. 아이폰에서 전혀 잘 작동하지 않을 것입니다. –

+0

그건 Carbon이 아니라 Core Foundation입니다. CFNetwork는 iOS에서 잘 작동합니다. 나는 코코아 솔루션에 그것을 선호하지는 않지만 언뜻보기에는이 코드에 아무런 문제가 없다. 핵심 재단은 매우 유용합니다. –

관련 문제