2014-10-22 1 views
-1

레코드를 얻기 위해 서버에 요청 (MySql Query in XML)을 보내고 있습니다.NSURLConnection sendSynchronousRequest의 이상한/위증한 동작

모든 것이 예상대로 완벽하게 작동합니다. 나는 2 개월 이래로 기록을 얻는이 방법을 사용하고있다. 어제 나는 이상한 문제에 직면했다.

나는 WiFi 설정을 다음과 같이 differnt 벤더 (인터넷 공급자 회사)에서 두 개의 인터넷 연결을 가지고있다. 액세스 SECOND 인터넷 연결 NSWRLConnection 요청은 서버에서 수신되지 않고 응용 프로그램에서 응답하지 않습니다. 난 그냥 테스트 단계에서 중단 점을 넣고 모든 코드가 컴파일되고 있는지 확인합니다. 그러나 nil Respose. 나는 다시 다시 FIRST 인터넷 연결 및 에 서버로 전송 없음 요청 및 응답이 문제 될 수있다 이것이 모두가 일어나는 이유는

One Important thing is that, In this testing Period Since Yesterday, 
Three times the Request is sent to Server and I Got Response. 

를, 와이파이 설정을 변경하지

...? ??

이 문제는 인터넷 가용성이 아닐 수 있습니다. 나는 브라우징하고 인터넷이 완벽하게 작동하는 모든 시간을 확인합니다.

오늘 나는 XCode를 끝내고 다시 시작하고 첫 번째 인터넷 연결을 사용합니다. 이제 모든 것이 완벽하게 다시 작동합니다.

이번에도 문제는 무엇입니까 ... ???

이것은 서버에서 요청을 보내고 응답을 받기 위해 사용하는 코드입니다.

NSString *message = @"XML Contains MySql Query"; 
NSError *error; 
NSURLResponse *response; 
NSURL *uRL = [NSURL URLWithString:@"http://xxxxxxxxxxxxxx"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:uRL]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[message dataUsingEncoding:NSUTF8StringEncoding]]; 

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

if (xmldata == nil) 
    { 
     NSLog(@"response: %@", response); 
     NSLog(@"error: %@", error); 
    }  
NSString *data = [[NSString alloc] initWithData:xmldata encoding:NSASCIIStringEncoding]; 

연결이 시간 초과 될 수 있기 때문에 내가

response: (null) 
error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."  
UserInfo=0x7a6bafa0 {NSErrorFailingURLStringKey=http:/xxxxxxxx, _kCFStreamErrorCodeKey=57, 
NSErrorFailingURLKey=http://xxxxx, NSLocalizedDescription=The network connection was lost., 
_kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7a7ddb80 "The network connection was lost."} 
+1

난 당신이'sendSynchronousRequest 상'error' 변수를 제공하지 않는 것을 알 수'요청을하고, 따라서 오류를 검토하지. 'error' 변수를 추가하고'xmldata'가'nil' 일 때'NSLog()'를 추가 한 다음 전체 오류 메시지를 질문에 추가하십시오. 항상 오류를 확인하고 오류 변수를 제공하십시오. – zaph

+0

@Zaph가 변경되었지만 NSLog에서 오류가 null ... –

+0

@Zaph ... 이것이 Erroe를 확인하는 올바른 방법입니까? ??? –

답변

1

를 수신하고 응답 및 오류입니다 ("네트워크 연결이 끊어졌습니다.") : 그 조사합니다.

찰스 프록시를 사용하여 트래픽을 살펴볼 수 있습니다. 연결시 타이밍을 알려줍니다. 아마도 더 긴 시간 초과를 설정할 수도 있고 서버가 시간 초과 제한을 가질 수도 있습니다.

먼저 연결 시간을 조사한 다음 그 정보로 다음에 무엇을 할 것인지 결정할 수 있습니다.

이전 :
오류가있는 경우 반환 값을 확인하고 검토하는 것이 좋습니다.

예제 코드 :

NSError *error; 
NSHTTPURLResponse *response; 
NSData *xmldata = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
if (xmldata == nil) { 
    NSLog(@"response: %@", response); 
    NSLog(@"error: %@", error); 
} 
+0

을 확인해주세요. –