合作業主中有位對coding特別有興趣,前些日子提出界接Web Service需求,不過也僅止於有興趣吧,不然piggy也不會進行這項測試XDD
本次任務:
1.使用第三方發佈之WebService(url已知)
2.透過帳號存取權限內的資料(帳密已知)
遭遇情境:
1.在對方只給url情況下,一切資訊只能由WSDL取得
2.WebService帶有帳號驗證,有的Developer寫在WebMethod(不建議),有的以SOAPHeader建構,界接方法因此而異。
此次使用之Web Service採正規方式賦予資料存取權限(即SOAPHeader),在Web測試介面中,沒有所謂的帳號&密碼input box,無法於界接前先行測試,即使wcftestclient(WCF測試用戶端)都無法滿足此需求。
測試結果:
1.傳遞帳號/密碼予Web Service後,無法進行其他後續操作。
HTTP 狀態 407 : Proxy Authentication Required ( The ISA Server requires
authorization to fulfill the request. Access to the Web Proxy service is denied.
)。
2.帳號/密碼通過驗證後已可進行其他操作 ,操作卻面臨逾時狀況。
已超過連接逾時的設定。在作業完成之前超過逾時等待的時間,或者是伺服器未回應。
解決辦法:
1.原因在於piggy公司內部設有proxy,外部服務會被擋掉,只要明確給定proxy代理資訊即可。
2.突破proxy後只剩單純引用Web Method來收取資料,但無論資料量多小的操作皆面臨逾時的狀況,即使設定client端timeout時間亦無法解決。
考量server端各類狀況都有可能造成影響,在無法實際操作server現實面下,piggy決定重新架設一樣功能的Web Service進行完整測試!
綜合以上,接下來提供兩篇專文描述如何架設附有權限之Web Service、 如何通過Web Service帳號驗證並取得資料。
順帶一提,本系列文章是和陳兄&Ola討論後激盪出一點想法才開始著手,雖然也是胡亂摸索好一陣子才有方向,還是感謝2位的寶貴意見!
回覆刪除