2012-05-30 4 views
-1

POST 메서드를 사용하여 JSON 문자열을 서버로 보냅니다. "Array (JSON String) Array (JSON String)"을 나타내는 응답을 반환해야합니다. 응답에는 두 개의 배열이 들어 있습니다. POST 메서드를 사용하면 첫 번째 배열이 채워지고 GET 메서드를 사용하면 두 번째 배열이 채워집니다. GET 메서드를 통해 JSON을 보내려고했는데 실제로 두 번째 배열이 채워졌습니다. 그러나 POST 메서드를 통해 JSON을 보내려고하면 두 배열이 모두 비어있게됩니다.POST를 통한 JSON 전송이 작동하지 않습니다. - 목표 C

NSData *requestData = [NSJSONSerialization dataWithJSONObject:sqlArray options:NSJSONWritingPrettyPrinted error:&error];

NSURL *url = [NSURL URLWithString:@"http://myurl/xmlrpc/imwebsrvcjson.php"]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:requestData]; 

NSData *result =[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

NSString *returnString = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]; 

if (error == nil){ 
    NSLog(@"The Result string: %@", returnString); 
} 

당신이 내 코드에 어떤 문제가 있는지 말해 줄 수 :

저는 여기에 사용되는 코드는?

+0

다른 끝을 보는 게 뭐야? –

+0

@Hot Licks 서버에 액세스 할 수있는 사람이 주변에 있지 않기 때문에 실제로 알지 못합니다. 그는 POST가 성공적인지 여부를 알기 위해 위의 응답을 받아야한다고 말했습니다. :/ – user1412469

+0

이 유사하다 http://stackoverflow.com/questions/4456966/how-to-send-json-data-in-the-http-request-using-nsurlrequest –

답변

-2

내 서버로가는 JSON은 key = question..ie {: question => {dictionary}}에 대해 하나의 값 (다른 사전)이 포함 된 사전이어야 함을 유의하십시오.

NSArray *objects = [NSArray arrayWithObjects:[[NSUserDefaults standardUserDefaults]valueForKey:@"StoreNickName"], 
    [[UIDevice currentDevice] uniqueIdentifier], [dict objectForKey:@"user_question"],  nil]; 
NSArray *keys = [NSArray arrayWithObjects:@"nick_name", @"UDID", @"user_question", nil]; 
NSDictionary *questionDict = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

NSDictionary *jsonDict = [NSDictionary dictionaryWithObject:questionDict forKey:@"question"]; 

NSString *jsonRequest = [jsonDict JSONRepresentation]; 

NSLog(@"jsonRequest is %@", jsonRequest); 

NSURL *url = [NSURL URLWithString:@"https://xxxxxxx.com/questions"]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url 
      cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 


NSData *requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody: requestData]; 

NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 
if (connection) { 
receivedData = [[NSMutableData data] retain]; 
} 
The receivedData is then handled by: 

NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
NSDictionary *jsonDict = [jsonString JSONValue]; 
NSDictionary *question = [jsonDict objectForKey:@"question"]; 

이것은 100 % 확실하지 않으며 약간의 재검토가 필요하지만 모든 것을 시작해야합니다. 그리고 내가 말할 수있는 것에서 이것은 비동기 적입니다. 이러한 호출이 이루어지는 동안 내 UI가 잠겨 있지 않습니다. 희망이 도움이됩니다.

+0

답변을 편집하고 코드를 읽을 수 있도록 포맷하십시오. – kleopatra

+0

고마워. 물론 .. –