星期五下班前,在機房把自己支付部門的證書切換一下,貌似相安無事;星期一來到辦公室另一個項目的同事說支付接口請求訪問不了;想一下是不是自己切換證書引起的;下面是排錯步驟:
1、先線下用瀏覽器訪問接口:
*訪問的是get請求是可以返回數據的,說明證書是沒問題的,那麼就是本地機房通信問題或者代碼問題了;登錄機器查看
2、登錄有代碼的服務器查看:
>>> import urllib2 >>> import urllib >>> html = urllib2.urlopen("https:xxxxx?jsonData={xxxxxxx") ###用匿名指代 >>> print html <addinfourl at 24155344 whose fp = <socket._fileobject object at 0x16e9ed0>> >>> dir(html) ##由於返回的是對象,查看具體有哪些方法 ['__doc__', '__init__', '__iter__', '__module__', '__repr__', 'close', 'code', 'fileno', 'fp', 'getcode', 'geturl', 'headers', 'info', 'msg', 'next', 'read', 'readline', 'readlines', 'url'] >>> print html.next() ##查看next有返回值 {"success":2963.48}
*在本機上執行有返回結果,說明通信沒問題,而且能返回結果服務端應該也是沒問題,那麼剩下的就是php代碼了
3、百度找到了,解決方式:
在請求的代碼加上如下:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
*原因:在本地的機房無法驗證SSL證書,那麼代碼跳過即可。
這次只是一場簡單的排錯過程,但是也看到了python在日常運維中也是起到了不小的作用的,主要是思路步驟清晰一步一步來。