0

내 웹 서비스에 연결하고 문자열을 POSTS에 연결하고 문자열 응답을받는 메소드를 성공적으로 만들었습니다. 그러나 NSJSONSerialization을 사용하여 만든 JSON 사전을 POST하려고합니다. 그러나, Xcode는 저에게 오류를주고 있습니다. 초기 코드를 변환하려고했습니다. 아래 관련 줄 ...NSURLConnection을 통해 JSON 데이터를 보내는 방법

NSData* loginDataJSON = [NSJSONSerialization dataWithJSONObject:loginDataDictionary options:NSJSONWritingPrettyPrinted error:&error]; 
[request setValue:loginDataJSON forHTTPHeaderField:@"loginDataJSON"]; 
[request setHTTPBody:[loginDataJSON dataUsingEncoding:NSUTF8StringEncoding]]; 

두 번째 라인 heres는 NSString이 필요한 곳에서 NSData를 사용하고 있다고 불평합니다. 세 번째 줄은 loginDataJSON 내가 (즉 NSJSONSerialization 나를주는 것 때문에)이 사용할 수없는 경우있는 NSData 객체를 강제 것으로 보인다 dataUsingEnconding

에 응답하지 않을 수 있음을 뿌려줍니다. JSON을 기존의 요청 코드와 함께 사용할 문자열로 변환하려고 최선을 다합니까, 아니면 NSString을 사용하는 대신 NSData를 받아들이도록 요청 코드를 변경할 수 있습니까?

답변

0

JSONKit 또는 RESTKit과 같은 프레임 워크를 사용해 보셨습니까? RESTKit은 JSON과의 웹 서비스 통신에 특별히 사용되며 JSONKit과 다른 파서를 내부적으로 사용합니다. 나는이 문제와 어쩌면 미래의 어느 하나를 해결할 생각)

+0

아니요, 아직. 나는 그들에 대해 알고 있지만 가능한 한 iOS 방식으로 내장 된 것을 선호한다. 하지만 아무도 올바른 방향으로 나를 가리킬 수 없다면, 나는 REST로 돌아 가야 할 수도 있습니다. –

0

가 변경 가능한 요청을 할 방법은 다음과 같다

[request setHTTPBodyWithString:myMessageJSON]; 

:

- (void)setHTTPBodyWithString:(NSString *)body { 
    NSData *bodyData = [body dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    [self setValue:[NSString stringWithFormat:@"%d", [bodyData length]] forHTTPHeaderField:@"Content-Length"]; 
    [self setHTTPBody:bodyData]; 
} 
0

당신은으로 JSON을 보낼 필요 요청 본문 및 콘텐츠 유형 및 콘텐츠 길이를 설정할 수 있습니다.

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:nil]; 
[request setValue:@"application/json" forHTTPHeaderField:@"content-type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [loginDataJSON length]] forHTTPHeaderField:@"content-length"]; 
[request setHTTPBody:loginDataJSON];