2012-02-28 13 views
9

私のWebブラウザでは、NSURLConnectionから取得したNSDataUIWebViewをロードしようとしています。サイトの代わりにUIWebViewにロードしようとすると、HTMLプレーンテキストが表示されます。ここでNSWをUIWebViewにロードする

は私のコードは次のとおりです。

NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.msn.com"]]; 
[NSURLConnection connectionWithRequest: request delegate:self]; 

以降のコードでviewDidLoad:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
    { 
    webdata = [NSMutableData dataWithData: data]; 
    } 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
    { 
    [webview loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
    } 

UIWebView loading plain HTML instead of loading the page

+0

はhttps://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.htmlを参照してください – titaniumdecoy

答えて

14

受信しているデータを追加していません。このコードを使用してください

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ 
    if (webdata == nil) { 
     webdata = [[NSMutableData alloc] init]; 
    } 
    [webdata appendData:data]; 
} 

このメソッドは、データ長に応じて1回以上呼び出すことができます。したがって、あなたのivarに新しいデータを割り当てるのではなく、データを追加して、受信したデータの最後のパケットではなく完全な応答を得ます。
------------------------------------------------ -------------------------------------------------- ----------------------------------

またはこのように使用します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
     webdata = [[NSMutableData alloc] init]; 
} 
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ 
    [webdata appendData:data]; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
    [mWebView loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
} 
+1

方法は、上記のおかげで、非常によく動作します。 UIWebview loadRequest:NSURLRequestを使用するのではなく、このメソッドを使用するときにデスクトップバージョンのWebサイトをロードしています。既定でサイトのモバイルバージョンをロードする簡単な方法はありますか? (私はこの種のものに新しいです) – Greg

+0

私も:D ..新しい質問としてこれを入れてください。それまで私は答えを見つけるだろう..あなたの新しい質問のリンクをここに投稿して、もし答えが出たら私はそれをやる方法も教えてください –

+0

また、モバイル版を読み込み、カスタムローダーを使ってクリックしたリンクをUIWebView内にロードします。 –

関連する問題