JSON(iOS)을 사용한 코코아 오류 3840
서버에 데이터를 전송하여 JSON 형식으로 응답을 받으려고 합니다.문제는 서버가 "성공" 또는 "실패"를 반환해야 하는데 "(늘)"을 반환한다는 것입니다.
다음은 반환된 오류입니다.
오류 도메인=NSCooaErrorDomain Code=3840 "작업을 완료할 수 없습니다.(Cocoa 오류 3840). (JSON 텍스트가 배열 또는 개체로 시작되지 않았으며 fragment가 설정되지 않도록 하는 옵션이 없습니다.)UserInfo=XXXXXXX{NSDebugDescription=JSON 텍스트가 배열 또는 개체로 시작되지 않았으며 조각이 설정되지 않도록 허용하는 옵션이 없습니다.}
서버 스크립트에 오류가 있을 수 있습니까?
데이터를 전송하고 응답을 받는 기능은 다음과 같습니다.
- (void) putData:(NSString *)parameter valor:(NSString *)valor {
NSString *rawString = [NSString stringWithFormat:@"%@=%@", parameter, valor];
NSData *data = [rawString dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:@"http://www.xxx.xxx/xxx.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"PUT"];
[request setHTTPBody:data];
NSURLResponse *response;
NSError *error;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSLog(@"responseData: %@ error: %@", json, error);
}
옵션을 통과하지 않는 한NSJSONReadingAllowFragments
로.[NSJSONSerialization JSONObjectWithData:options:error:]
서버로부터의 응답은 어레이 또는 사전인 최상위 컨테이너와 함께 유효한 JSON이어야 합니다.
예를 들어 다음과 같습니다.
{ "response" : "Success" }
추신. 만약 당신이 변이 가능한 사전을 원한다면, 당신은 또한 다음을 포함해야 합니다.NSJSONReadingMutableContainers
옵션을 선택합니다.
서버의 응답에 유효한 JSON이 포함되어 있지 않을 수 있습니다.
기술적으로 JSON 개체는 "array" 또는 "object(dictionary)"로 시작해야 합니다.
즉, 서버가 반환하는 것은 모두 무효가 됩니다.
또한 NSJSONReadingAllowFragments 옵션을 사용하여 JSON을 강제로 사용할 수 있습니다.
를 사용하여,
AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
iOS 기기에서 VPN에 연결되어 있는 경우 이 문제가 발생할 수 있습니다.
언급URL : https://stackoverflow.com/questions/14171111/cocoa-error-3840-using-json-ios
'it-source' 카테고리의 다른 글
ng클릭으로 $이벤트를 자동으로 전달하시겠습니까? (0) | 2023.03.12 |
---|---|
Spring 프레임워크는 왜 Guava 캐시의 사용을 폐지했습니까? (0) | 2023.03.07 |
스프링 부트 정보웹 환경을 올바르게 비활성화하는 방법 (0) | 2023.03.07 |
JSON 명명 규칙(snake_case, camelCase 또는 PascalCase) (0) | 2023.03.07 |
리액트 라우터를 사용하여 사용자가 페이지를 떠나는 것을 감지하는 중 (0) | 2023.03.07 |