2016-06-14 4 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のようなこの

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

そしてエラーのようempty.Getting responseDataとして_responseDatamyAppsの値を見ることができ、時間の午前であることをresponse.Atを取得しておりません空の

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

このエラーが発生したとき、ブラウザでURLを入力しようとしましたが、ブラウザで応答しています。 だから私はきれいにして、もう一度アプリを実行し、まだ同じ問題に直面している。 しかし、たとえばシミュレータを変更してiPhone 6sで動作していて、上記のエラーが発生していて、今度はiPhone 6に変更すると応答が得られます。

誰でもこのことを教えてください。

+0

は:'、 'NSString'に' _responseData'を変換し、あなたが持っているものを参照してください。 – rmaddy

+0

私はNSString * newStr = [[NSString alloc] initWithData:_responseData encoding:NSUTF8StringEncoding]のようにしました。しかし、タグの形式は次のようになります。 <! - [レスポンスはJSON( 'あなたが与えたサンプルから、それは仕方によって完全ではないのですが、私は><!DOCTYPE HTML'で始まる)ではありません ananthi

+0

>] IE 8あればあなたが得る理由、それはです'NSJSONSerialization'で試してみるとエラーです。 – Larme

答えて

0

これは不適切な方法でクッキーを処理しようとすると発生します。あなたのコードから下の行を削除してチェックしてください。

[request setHTTPShouldHandleCookies:YES]; 
+0

私はこれを試して、同じシミュレータで動作しますが、まだヌル応答を得ています:( – ananthi

0

時々、アポストロフィ( ')、スペースや特殊文字はNSMutableURLRequestは 『ヌル』 URLを返すために発生することがあります。 エンコード(パーセントエスケープエンコーディング)このようNSMutableURLRequestに渡す前に、文字列のURL: `connectionDidFinishLoadingで

NSString *updatedPhotoUrl  = originalUrlString ; 

updatedPhotoUrl    = [updatedPhotoUrl stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: updatedPhotoUrl]]; 
関連する問題