[問題] https NSURLConnection 的問題

看板MacDev作者 (天天)時間12年前 (2012/07/12 15:46), 編輯推噓6(6025)
留言31則, 6人參與, 最新討論串1/2 (看更多)
因為現在連線方式要改成用https的方式去連 所以我APP要改寫一下 然後用到NSURLConnection這東西 但是他不會等到我連線完成回應的資料也下載完成後才繼續程式 我送出去他就直接跑下一行程式 造成沒資料回來 http://pastebin.com/eAHAHn66 然後我google到兩個方式 一個是用 NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:NO]; [theConnection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; [theConnection start]; 但是無效 他還是不會等資料回來就繼續走了 另外一個是用無線迴圈去等資料完成 while(!finish) { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } 這種方式是可以等到資料回來才繼續下去 但是要用到無限迴圈 好像有點不好... 想搞定看看第一個方法是怎麼做的 還是我少做甚麼... 有人可以給我解答麻... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.63.193

07/12 15:54, , 1F
為什麼不改成非同步的寫法呢?
07/12 15:54, 1F

07/12 15:55, , 2F
(也就是送出 Request 之後用 Delegate 去接結果)
07/12 15:55, 2F

07/12 16:18, , 3F
你一次只送出一個請求嗎?還是有用迴圈跑?
07/12 16:18, 3F

07/12 16:45, , 4F
目前只有一個 之後會有多個
07/12 16:45, 4F

07/12 16:46, , 5F
請位非同步的寫法是甚麼意思? 目前適用delegate去接結果
07/12 16:46, 5F

07/12 16:46, , 6F
但是還沒接完 他就跳走了
07/12 16:46, 6F

07/12 16:51, , 7F
我自己遇到是跑迴圈跑太快,一次送出太多request來不急接收
07/12 16:51, 7F

07/12 16:51, , 8F
現在只有一個呀~ 一個都搞不定 還沒想到多個..
07/12 16:51, 8F

07/12 16:52, , 9F
所以第一個request還沒跑完,就已經送出第二個第三個reques
07/12 16:52, 9F

07/12 16:52, , 10F
後來有解決,不過看來情況好像不一樣,不知道"跳走"是甚
07/12 16:52, 10F

07/12 16:52, , 11F
麼意思
07/12 16:52, 11F
我是建立一個.h .m要來做call api這件事情 然後送出需求給server之後 他會直接跑到下一行 不會等資料回傳完整之後再回傳資料給我 然後程式就跑到後面我需要有接回資料的地方的程式 現在用一個無限迴圈把他停在送出資料的那行的話 就可以正常 會等到資料回傳之後再繼續下去 但是也有google到第一個做法 所以想知道第一個做法的方式是如何 是不是我有甚麼地方沒注意到的 所以她不會等到資料接收結束才繼續下一行 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 16:58)

07/12 17:09, , 12F
你處理data的code要放在delegate裡面
07/12 17:09, 12F
但是 如果沒有用迴圈去跑讓她停留在那邊的話 他根本不會跑delegate 就直接下一行了 他只會送出去 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:13)

07/12 17:17, , 13F
弱弱一問 有用到UIWebview嗎@@?
07/12 17:17, 13F
沒有 只是 http post 需要送資料過去 等他回給我資料 那些資料我在來使用 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:21)

07/12 17:23, , 14F
你是要回傳的html原碼嗎?
07/12 17:23, 14F
回傳的資料是JSON格式

07/12 17:24, , 15F
有那邊可以讓我放code會讓大家比較好讀的嗎?
07/12 17:24, 15F
※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:25)

07/12 17:25, , 16F
07/12 17:25, 16F

07/12 17:28, , 17F
JSON沒用過...QQ看要不要用UIWebView試試看
07/12 17:28, 17F

07/12 17:28, , 18F
然後在webViewDidFinishLoad處理你要的資料
07/12 17:28, 18F
http://pastebin.com/eAHAHn66 json就只是一串文字而已 用webview去做反而沒意義 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:32)

07/12 17:38, , 19F
一樣可以在後端執行阿~我也是post出去之後,在DidFinishLoa
07/12 17:38, 19F

07/12 17:38, , 20F
d處理網頁原碼0.0 速度一樣很快..以上..新手弱弱建議-.-
07/12 17:38, 20F

07/12 17:39, , 21F
json就真的不懂了~~>"<
07/12 17:39, 21F
現在重點真的不是在json 現在是還沒接收到資料 他就跑下去了 我根本還沒看到他回來是甚麼東西 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:42)

07/12 19:06, , 22F
怎麼不用[NSData dataWithContentsOfURL:url]?
07/12 19:06, 22F

07/12 19:19, , 23F
那會block UI,最好避免
07/12 19:19, 23F

07/12 23:07, , 24F
對啊.. 會block ui..不過原po不是就要這樣嗎?
07/12 23:07, 24F

07/13 10:48, , 25F
這個函數 只是下載吧?這是GET資料 但是我要POST後再GET
07/13 10:48, 25F

07/13 12:00, , 26F
那我會建議直接用現有的library去包裝你的NSURLConnectio
07/13 12:00, 26F

07/13 12:02, , 27F
ASIHttpRequest, AFNetworking, MKNetworkKit....
07/13 12:02, 27F

07/13 12:02, , 28F
比你自己去組NSData.. 自己去處理delegate容易許多
07/13 12:02, 28F

07/13 13:52, , 29F
我知道~ 但是我還是想要知道為什麼.. 如果這禮拜搞不定
07/13 13:52, 29F

07/13 13:52, , 30F
我下禮拜就會用上述的那些東西來用了
07/13 13:52, 30F

07/14 00:01, , 31F
ASIHttpRequest 雖然沒在維護了 不過也很夠用了
07/14 00:01, 31F
文章代碼(AID): #1F_e2yLR (MacDev)
文章代碼(AID): #1F_e2yLR (MacDev)