Just My Life & My Work

Posts tagged ‘server’

[iOS] 不合法的伺服器憑證問題

這是個很奇妙的議題,明明是用去年人家寫的案子呼叫API的程式碼,連第三方套件也一模一樣,所帶入的方法參數一模一樣,但是卻跑不出相同的結果⋯⋯

不知怎麼命名這篇文章,暫且以不合法的伺服器憑證問題為名吧!似乎跟http和https有關聯?還有什麼SSL?

然後就跑出這幾行訊息:

The certificate for this server is invalid. You might be connecting to a server that is pretending to be “xxx.ooo.com.tw” which could put your confidential information at risk.

查了網路前人的解法,原來只要在兩個delegate改成這樣⋯⋯

- (BOOL)connection:(NSURLConnection *)connection
canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

起初還想要請負責server端的人改安全性程度,不過既然去年的project都可以成功跑出結果,還是由我app端來處理問題吧!

寫了以上的code,還是不太明白意義⋯⋯知道的人請跟我說一下><;

參考:How to use NSURLConnection to connect with SSL for an untrusted cert?NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) iOS

[iOS] 三層級顯示影像 (Three-Level Display Image)

很多時候在APP顯示的影像是來自網路,這時候我們會想到,若沒有網路時還想顯示影像該怎麼辦?解決方法當然就是在有網路的時候,把目標影像給儲存到手機端,下次顯示時直接取用。

然而此時出現另一個問題,就是從手機端顯示影像,居然會讓體驗變得頓頓的卡卡的,感覺十分不舒服⋯⋯解決辦法就是把影像快取起來,下次顯示時直接拿來用。

之所以頓頓卡卡是因為讀取自「硬碟」,網路下載會先儲存在「記憶體」,前者是在主程序讀取影像,因來源是硬碟,所以不僅耗時較久,連帶又會卡UI;後者在非主程序下載,當下載完才會切換到主程序顯示,來源又是在記憶體,讀取速度較快,因此就不會卡卡頓頓的。

於是我們就發展出三層級顯示影像 (Three-Level Display Image),也就是從網路(伺服器)下載影像到手機端(硬碟),再將影像快取(記憶體)起來顯示

上一篇影像快取 (Image Cache)我的用法是,從網路下載影像,接著快取起來顯示,跳過儲存到手機端這個步驟,在此我用簡單的if-else說明如何實作!

(繼續閱讀…)

[iOS] POST在參數中有array或dictionary

哈~不知道怎麼下標題,不過直接看圖和程式碼就能懂囉~

如果用post把資料傳到server上,參數是arraydictionary時,key和value要怎麼下呢?

POST array dictionary

這是在PostMan上下KeyValue

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: