Demo: Calling An API | Python for Beginners [37 of 44] 新手 debug 紀錄

Demo: Calling An API | Python for Beginners [37 of 44] 新手 debug 紀錄

照著教學影片建立了 azure 帳號與相關資源。為了讓自己更熟悉代碼,所以選擇看完影片後,照著 computer vision 的 documentation 自己將程式寫出來,結果只是幾行代碼,運行時錯誤百出,真是廢到笑死自己。

只好複製提供的代碼,提供的代碼在地址部份需要做更改,影片示範的是 computer vision 2.0 版本的,目前已經是 3.2,現在 Endpoint的地址會跟影片的不一樣。vision_service_address 換成自己的 Endpoint,address 這邊需要對照 3.2 版本做修改

address = vision_service_address + "vision/v3.2/analyze"

金鑰更換成自己的,運行一次就 ok。只好兩邊對照,邊運行,邊糾錯。

錯誤1:requests.exceptions.HTTPError: 404 Client Error: Resource Not Found

這是網址地址錯誤,找不到資源,後來仔細查看,果然地址少打了一個字母

錯誤2:requests.exceptions.HTTPError: 401 Client Error: PermissionDenied

這是金鑰認證失敗,所以資源存取被拒。確定金鑰是正確的,但是複製貼上範例代碼卻正常,自己的變量卻不行,估計要輸出時自己寫的變量有大小寫錯誤。

錯誤3:requests.exceptions.HTTPError: 400 Client Error: Bad Request

這錯誤找了好久,最後才發現 parameters 裡,逗號後不能有空格

錯誤:parameters = {‘visualFeatures’:’Description, Color’}
正錯:parameters = {‘visualFeatures’:’Description,Color’}

錯誤4:TypeError: Object of type method is not JSON serializable

錯誤顯示是在 line 47, in <module> print(json.dumps(results)),但這行怎麼看都跟範例一樣,最後才發現自己在倒數第二行的代碼裡忘了括號,造成 print 出錯。
錯誤:results = response.json
正確:results = response.json()
最後自己嘗試著把傳回來的 json 用比較好閱讀方式來輸出,也算是充分複習了 dictionary 的內容讀取,for 迴圈與 if..elif 的應用

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

返回頂端