發表文章

目前顯示的是有「RestSharp」標籤的文章

RestSharp 回傳HttpStatusCode為0的異常_基礎連接已關閉: 應該保持運作的連接卻被伺服器關閉_ServicePointManager 類別

圖片
  近期協助歐洲專利網站api資料存取過程 遇到一個離奇問題 status code回傳了0這個詭異的數字 一般而言,HTTP Status code只會存在下列範圍 資訊回應 (Informational responses, 100–199) 成功回應 (Successful responses, 200–299) 重定向 (Redirects, 300–399) 用戶端錯誤 (Client errors, 400–499) 伺服器端錯誤 (Server errors, 500–599) 在經過大量爬文後發現跟以前提過的 停用 TLS 1.0 有點相關 微軟、蘋果、Google及Mozilla四大瀏覽器業者將在2020年終止支援TLS 1.0、1.1 TLS 1.2 (Transport Layer Security version 1.2)理論上應該目前都改用此標準了 ServicePointManager 類別 當中的 SecurityProtocol屬性 能讓我們取得或設定由 ServicePointManager 物件管理的 ServicePoint 物件所使用的安全性通訊協定。 根據官方說明 .net4.6之後理應預設都已經自動啟用TLS1.2 在.net4.5以下時期TLS1.2根本沒有被支援 但已經使用是.net4.6了.... 看來可能還是要透過程式做相關設定 1.在call api的共用呼叫地方 調整 ServicePointManager.SecurityProtocol 擴大 SSL/TLS 版本範圍 或強制TLS1.2 1 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 2.把IRestResponse改為RestResponse 3.調整RestClient 重新try 一陣子較比較穩定 Ref: RestSharp returns Status '0' while calling post method https://stackoverflow.com/questi...

C#_使用RestSharp開發歐洲專利局資料WebApi存取應用_token概念_Postman超猛程式碼轉譯功能

圖片
  EPO OPS(European Patent Office Open Patent Services) Open Patent Services (OPS) is a web service which provides access to the EPO's data via a standardised XML interface. It does this using RESTful architecture. 歐洲專利局(EPO) 提供給開發者做專利文獻資料存取的Web API  也就是OPS 在官方有公開存取文件可做下載 https://www.epo.org/searching-for-patents/data/web-services/ops.html#tab3 首先歐洲專利局開的API存取規則十分嚴謹 會需要先有一對Key,SecretKey(帳號跟密碼) 註冊完並通過申請後會獲得 這個Key 和 SecreteKey 傳入之前必須是 以{Key}:{SecreteKey}  之間用分號隔開並經過Base64編碼後的結果 由於是採用 Basic Authorization 因此在塞入Header時候必須在前面多加 "Basic " 最終傳入Header格式 "Basic " + Base64Encode({Key}:{SecreteKey}) 並在每次呼叫API時候會需要先取得Token 具有時效性(10~20分鐘就失效) 官方文件是說理論上是20分鐘的有效期限 一完整OPS api呼叫存取時序圖 中間經由EPO 的 Gateway來頒發token token (符記;訊標;權杖) 有點類似你去某個園區或展覽會有買門票可能就是當天營業時間可以用的概念。 有點像是 具有時效性的門票 ,在大陸用語可能會被稱作「令牌、通證」這種翻法是比較直觀的。 開啟POSTMAN來測試看看 預設文件有提及到要先傳入 Header部分 Content-Type 為 application/x-www-form-urlencoded Body部分 要傳入的Key:Val grant_type : client_credentials Authorization部分 授權則是設定其帳號密碼 對應完成最原始發送出去...