서버에 연결하기 위해 -[NSURLConnection initWithRequest...]
을 사용하고 서버 측에 오류가 발생하면 400이라는 메시지가 본체에 표시됩니다. 오류가없는 경우 didReceiveData에서 응답 데이터를 가져올 수 있습니다. 그러나 서버에서 오류 400을 반환하면 didReceiveData에 오류 메시지가 표시되지 않습니다.오류가 발생하면 NSURLConnection 다른 결과
그러나 동일한 요청을 수행하기 위해 -[NSURLConnection sendSynchronousRequest...]
을 사용하는 경우 sendSynchronousRequest
의 반환 값에서 오류 데이터를받습니다.
didReceiveData에서 오류 메시지를 가져오고 싶지만 그 이유는 알 수 없습니다. do, do some 누군가 나를 도울 수 있습니까? 나는 그것을 얻을 수 없다
NSURL *url = [NSURL URLWithString:@"http://devapi.xxx.com/v1/debug/error"];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:240] autorelease];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
NSLog(@"STATUS:%d", [((NSHTTPURLResponse *)response) statusCode]);
NSLog(@"ERROR:%@", error);
이 방법 :
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://devapi.xxx.com/v1/debug/error"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:240] autorelease];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
urlConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"statusCode:%d",((NSHTTPURLResponse *)response).statusCode);
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
NSLog(@"DATA:%@",[NSString stringWithCString:[receivedData bytes] encoding:NSASCIIStringEncoding]);
}
성공적인 (400이 아닌) 응답은'didReceiveData'를 호출합니까? 'didFailWithError'는 이제까지 불렀습니까? –
상태, 데이터 및 오류에 대한 로그 출력을 표시 할 수 있습니까? –
그의 문제는 HTTP 코드가 200이 아닐 때, 그는 항상 서버에서 응답의 "내용"부분을 읽을 수 없다는 것입니다. 그것이 문제가되는 이유는 그것이 어떤 종류의 응용 프로그램 오류인지 기록하기 때문입니다. – Vincent