在开发网站时,有时需要使用API接口来获取数据。请求API接口时,一般有二种方法:一种是
GET请求
,一种是
POST请求
。
大多数API接口只需要传入JSON参数就可以了,但有些接口需要传入XML参数。这对于一些新手就有一定难度了。下面学做网站论坛介绍一下PHP实现POST请求API接口并传递XML参数方法。(如果是wordpress网站,可以直接使用
wp_remote_post
来请求)
具体代码如下:
//XML参数
$data
=
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.gUnit_marry_mzb_webservice.topsuntech.com">
<soapenv:Header>
<AuthenticationToken>
<Username>marry</Username>
<Password>123456</Password>
</AuthenticationToken>
</soapenv:Header>
<soapenv:Body>
<ser:GetMarryInfo>
<ser:in0>123456</ser:in0>
<ser:in1></ser:in1>
<ser:in2></ser:in2>
<ser:in3></ser:in3>
</ser:GetMarryInfo>
</soapenv:Body>
</soapenv:Envelope>'
;
//接口地址
$api
=
'http://10.161.166.164:61001/baseifsys/thirdparty/restful/send?_servicecode=20220606174225'
;
$curl
=
curl_init
(
)
;
//初始化一个cURL会话(curl 就是模拟浏览器请求)
curl_setopt
(
$curl
,
CURLOPT_URL
,
$api
)
;
//设置一个cURL传输选项。连接接口
//curl_setopt($curl, CURLOPT_HEADER, 1);// 设置header
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
curl_setopt
(
$curl
,
CURLOPT_POST
,
1
)
;
//启用时会发送一个常规的POST请求
curl_setopt
(
$curl
,
CURLOPT_CUSTOMREQUEST
,
"POST"
)
;
curl_setopt
(
$curl
,
CURLOPT_POSTFIELDS
,
$data
)
;
//要发送的数据,这是传给BODY
//忽略证书
curl_setopt
(
$curl
,
CURLOPT_SSL_VERIFYPEER
,
false
)
;
curl_setopt
(
$curl
,
CURLOPT_SSL_VERIFYHOST
,
false
)
;
//CURL发送头部信息 一定要是Content-Type: text/xml;
curl_setopt
(
$curl
,
CURLOPT_HTTPHEADER
,
array
(
'Content-Type: text/xml;charset=UTF-8'
,
'Content-Length: '
.
strlen
(
$data
)
)
)
;
//curl_setopt($curl, CURLOPT_HEADER, 0);//忽略header头信息
curl_setopt
(
$curl
,
CURLOPT_TIMEOUT
,
0
)
;
//设置超时时间
curl_setopt
(
$curl
,
CURLOPT_RETURNTRANSFER
,
1
)
;
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
$content_obj
=
curl_exec
(
$curl
)
;
// 运行cURL,请求网页
curl_close
(
$curl
)
;
// 关闭URL请求
print_r
(
$content_obj
)
;
通过上面的代码就可以通过POST将XML参数传给API接口来请求数据了。
也可以直接传递JSON格式的数据,不需要转成数组。
$data
=
'{
"serviceID": "S10-00000020",
"senderID": "C10-00000011",
"serviceDescript": {
"data": {},
"serviceName": "{"accessId":"Sw1cnAhZ","accessKey":"ab6af3d50db74cbea478edd103c719bb","jtglywdxsfzmhm":"'
.
$_POST
[
'shengfenzheng'
]
.
'"}",
"serviceMethod": "get"
这时headers的信息要修改成’Content-Type’ => ‘application/json’才可以。
发布:学做网站论坛 分类:
建站方法技巧
最后更新:
浏览量:17538 次
学做网站论坛致力打造网站制作在线培训诚信平台,零基础学员在此
如何做网站
,最后可以独立建网站。
学做网站论坛建站培训通过原创建站教程+讲师在线辅导的方式,非常细致讲解各类网站制作方法,哪怕是零基础小白也能看的懂,学的会。