2016-06-14 2 views
0

객관적인 C에서 https URL을 누르는 동안 문제가 발생했습니다. 여기에 내 코드가 있습니다. https URL을 누적하는 동안 널 응답 받기

- (void)viewDidLoad { 

    NSString *urlString = [NSString stringWithFormat:@"MY URL",uid]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: 
            [NSURL URLWithString:urlString]]; 
    [request setHTTPShouldHandleCookies:YES]; 
    [request setHTTPMethod:@"GET"]; 
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    [connection start]; 

} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 

    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
    NSUInteger responseStatusCode = [httpResponse statusCode]; 
    _responseData = [[NSMutableData alloc] init]; 
    [self.responseData setLength:0]; 

    NSLog(@"connection"); 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    // Append the new data to the instance variable you declared 
    [_responseData appendData:data]; 
    NSLog(@"_responseData%@",_responseData); 

} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    NSError *jError; 
    NSArray *myApps= [NSJSONSerialization JSONObjectWithData:_responseData options:NSJSONReadingAllowFragments error:&jError]; 
    NSLog(@"jError:%@",jError); 
} 

내가 시뮬레이터에서 응용 프로그램을 실행

는 때때로 의 myapps 값을 얻고있다. this.myApps이 같은 는하지만, 대부분의 시간은 response.At에게 그 시간 _responseData 의 값을 볼 수 오전이

_responseData<3c21444f 43545950 45206874 6d6c3e0a 3c212d2d 20242052 65766973 696f6e3a 20322e31 34303431 36202420 2d2d3e0a 3c212d2d 5b696620 49454d6f>

그리고 오류 등의 empty.Getting 드 responseData로 의 myapps을 받고 있지 않다 공백

jError:Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}

이 오류가 발생하면 브라우저에서 URL을 누르면 브라우저에서 응답을 얻습니다. 그래서 다시 청소하고 앱을 실행하면 여전히 동일한 문제가 발생합니다. 하지만 예를 들어 시뮬레이터를 변경하면 iPhone 6에서 실행 중이고 위의 오류가 발생하여 이제 응답을 얻는 것보다 iPhone 6으로 변경됩니다.

아무도 도와 주실 수 없습니까?

+0

가','NSString'에'_responseData'을 변환하고 당신이 무엇을 참조하십시오. – rmaddy

+0

NSString * newStr = [[NSString alloc] initWithData : _responseData encoding : NSUTF8StringEncoding];와 같이 시도했습니다. 그러나 태그 형식은 다음과 같습니다. ananthi

+0

은 (당신이 준 샘플에서,이 방법에 의해 완료되지이다,하지만 난 'HTML'로 시작) 당신이 얻을 이유, 그건 'NSJSONSerialization'을 시도 할 때의 에러. – Larme

답변

0

부적절한 방식으로 쿠키를 처리하려고 할 때 이런 일이 발생합니다. 코드에서 아래 줄을 제거하고 확인하십시오. 때로는

[request setHTTPShouldHandleCookies:YES]; 
+0

내가 이것을 시도하고 동일한 시뮬레이터에서 실행하지만 여전히 null 응답을 받고있다 : ( – ananthi

0

, 아포스트로피 ('), 공간 또는 일부 특수 문자는 NSMutableURLRequest가 "널 (null)"URL을 반환하는 원인이 될 수 있습니다. 인코딩 (%의 탈출 인코딩)이 같은 NSMutableURLRequest에 전달하기 전에 문자열 URL :`connectionDidFinishLoading에서

NSString *updatedPhotoUrl  = originalUrlString ; 

updatedPhotoUrl    = [updatedPhotoUrl stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: updatedPhotoUrl]];