Just My Life & My Work

Posts tagged ‘web service’

[iOS] 呼叫Web Service除錯

今天來講一下簡單的問題,不知道要怎麼稱呼這一篇,就姑且叫呼叫Web Service除錯吧~

其實就是串API時所發現的奇異問題!使用PostmanChrome呼叫都很成功回傳我要的資料,卻在寫進iOS中卻得到不預期的結果,先前有提到過Basic Authentication,程式傳遞token後,回傳結果表示沒有傳遞token給server,明明就是照先前的code複製貼上修改API Function名稱,這次居然有問題讓我很納悶。

人不是萬能,總得要投降來找救兵,以便跳出框框,看見問題的癥結。還是找我們寫後台的資深工程師幫忙查看,搞了兩小時多,Function名稱換掉也一樣,最後資深工程師發現,原來URL不小心多打一個「/」~

錯:
http://happystudio.notebook.com:5000/api/ecg/?start_date=2017-10-18&end_date=2017-11-17

對:
http://happystudio.notebook.com:5000/api/ecg?start_date=2017-10-18&end_date=2017-11-17

原因:?前多一個/

那為何Postman或Chrome測試沒有問題?因為這兩個工具會自動把沒有「/」,變成有「/」,來符合後台的API格式,然而iOS SDK就沒做這個容錯處理。這要歸類成相容性問題嗎?其實複製URL貼上到Chrome測試,我就有發現網址會跳成有「/」。

花了點時間,算是幫後台debug啦~

[iOS] Basic Authentication

這次要串接的Web Service是使用Basic Authentication,是我公司資深工程師所用的認證方式,我之前都是取得伺服器回傳的Token來做之後API呼叫的「令牌」。學一下Basic Authentication也不錯啦~

WiKi這麼描述HTTP基本認證

在HTTP中,基本認證(Basic access authentication)是一種用來允許網頁瀏覽器或其他用戶端程式在請求時提供使用者名稱和口令形式的身分憑證的一種登入驗證方式。
在傳送之前是以使用者名稱追加一個冒號然後串接上口令,並將得出的結果字串再用Base64演算法編碼。例如,提供的使用者名稱是Aladdin、口令是open sesame,則拼接後的結果就是Aladdin:open sesame,然後再將其用Base64編碼,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最終將Base64編碼的字串傳送出去,由接收者解碼得到一個由冒號分隔的使用者名稱和口令的字串。
雖然對使用者名稱和口令的Base64演算法編碼結果很難用肉眼識別解碼,但它仍可以極為輕鬆地被電腦所解碼,就像其容易編碼一樣。編碼這一步驟的目的並不是安全與隱私,而是為將使用者名稱和口令中的不相容的字元轉換為均與HTTP協定相容的字元集。

[iOS] Basic Authentication.png
(繼續閱讀…)

標籤雲