星期五下班前,在机房把自己支付部门的证书切换一下,貌似相安无事;星期一来到办公室另一个项目的同事说支付接口请求访问不了;想一下是不是自己切换证书引起的;下面是排错步骤:
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
()
##查看next有返回值
{
"success"
:
2963.48
}
|
*在本机上执行有返回结果,说明通信没问题,而且能返回结果服务端应该也是没问题,那么剩下的就是php代码了
3、百度找到了,解决方式:
在请求的代码加上如下:
1
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
*原因:在本地的机房无法验证SSL证书,那么代码跳过即可。
这次只是一场简单的排错过程,但是也看到了python在日常运维中也是起到了不小的作用的,主要是思路步骤清晰一步一步来。
本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1748274,如需转载请自行联系原作者