星期五下班前,在机房把自己支付部门的证书切换一下,貌似相安无事;星期一来到办公室另一个项目的同事说支付接口请求访问不了;想一下是不是自己切换证书引起的;下面是排错步骤:
1、先线下用浏览器访问接口:

*访问的是get请求是可以返回数据的,说明证书是没问题的,那么就是本地机房通信问题或者代码问题了;登录机器查看
2、登录有代码的服务器查看:
1
2
3
4
5
6
7
8
9
|
>>> 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 ()
{ "success" : 2963.48 }
|
*在本机上执行有返回结果,说明通信没问题,而且能返回结果服务端应该也是没问题,那么剩下的就是php代码了
3、百度找到了,解决方式:
在请求的代码加上如下:
1
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
*原因:在本地的机房无法验证SSL证书,那么代码跳过即可。
这次只是一场简单的排错过程,但是也看到了python在日常运维中也是起到了不小的作用的,主要是思路步骤清晰一步一步来。
本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1748274,如需转载请自行联系原作者