[問題] NSURLConnection NSString無法正確加載 …

看板MacDev作者 (碳烤焦貓)時間14年前 (2011/08/27 22:39), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
http://www.uow.edu.au/handbook/yr2011/ug/arts/H11005889.html 我正嘗試解析這個網頁,目前的進度是可以順利的加載到WebView上 但由於資料太多太佔空間,想截取某部份的資訊 <div id="column-main" class="grid_14"> - </div>的部份 經過咕狗之後發現有個叫NSURLConnection的東西可以處裡下載下來的資訊 在- (void)connection:(NSURLConnection *)connection didRecieveData: (NSData *)data { } 裡可以處裡 ----編碼問題 已解決--- 用了NSLog(@"%@", data)去看裡面的data發覺全部都是意義不明的數字 <3c211444f 4354950 45206874.........>一長串 看了網路上的教學文章後發現幾個不明之處 http://kelp.phate.org/2011/06/ios-stringwithcontentsofurlnsurlconnect.html 裡面的方法是把data放入一個自創的NSMutableData裡面 之後在connectionDidFinishLoading用NSString 去initWithData, 但我用這個方式卻什麼也讀不到,我去NSLog了自創的NSMutableData得到一堆NULL的東西 這代表我appendData失敗嗎? 於是我又看了它上面寫的 NSString *post = @"submit=a &select2=052"; //post 的資料內容 NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:@"http://web.trtc.com.tw/c/TicketALLresult.asp"]]; [request setHTTPMethod:@"POST"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"Mobile Safari 1.1.3 (iPhone; U; CPU like Mac OS X; en)" forHTTPHeaderField:@"User-Agent"]; 完全看不懂=口=" 是因為我沒有寫好這些分類的東西才無法正常讀取網頁資料的嗎? 如果是的話我該怎麼去判斷裡面的分類要怎麼寫? 還有他setHTTPMethod是用Post,可是第一個範例是用Get,這兩個又該如何判斷?? 我該怎麼寫才能正確的顯示字串~"~ 請指教!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.233.89.220

08/28 01:03, , 1F
一堆數字 3c211444f 只是編碼格式問題
08/28 01:03, 1F
嗯,現在已經可以正確的看到data裡的資料,但發現無法正確的加載到webview裡 我用NSString *load = [[NSString alloc] initWithData: data encoding:.....]; [webView loadHTMLString:load baseURL:nil]; [self.view addSubview:webView]; 結果完全無法正確加載,圖片如下 http://a.imageshack.us/img716/7148/picre.png
※ 編輯: yueyajbdt 來自: 220.233.89.220 (08/28 20:08)

08/28 22:10, , 2F
無法正確加載是因為baseURL你給了nil。當你抓到html code
08/28 22:10, 2F

08/28 22:12, , 3F
存成nsdata不會保留url,所以html中"相對"連結通通失效
08/28 22:12, 3F
發現一個問題是在didRevieveData裡loadData的資料會完全等於data 但是如果把loadData放在DidFinishLoading裡的話會發現少了好幾個部份,也就是 為什麼我只能顯示出那個部份,所以我額外寫了一個NSMutableString, 再用appendString load,這樣在FinishLoading也可以完整顯示 loadHTMLString我是這樣寫的 [webView loadHTMLString:recievedData(自創的NSMutableString) baseURL[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]]; 這樣可以顯示出完整的文字,但…圖片全部都是X,然後網頁文字的顏色也無法讀取 變成黑色,排版也稍微亂掉,請問有解嗎? ※ 編輯: yueyajbdt 來自: 220.233.89.220 (08/29 19:43)

08/29 20:49, , 4F
自己搞錯了,基本上baseURL就把自己存的NSURL丟進去就會
08/29 20:49, 4F

08/29 20:49, , 5F
顯示正常了
08/29 20:49, 5F
文章代碼(AID): #1EMG6kAp (MacDev)
文章代碼(AID): #1EMG6kAp (MacDev)