学做网站培训课程介绍

当前位置:

PHP实现POST请求API接口并传递XML参数方法

在开发网站时,有时需要使用API接口来获取数据。请求API接口时,一般有二种方法:一种是GET请求,一种是POST请求

大多数API接口只需要传入JSON参数就可以了,但有些接口需要传入XML参数。这对于一些新手就有一定难度了。下面学做网站论坛介绍一下PHP实现POST请求API接口并传递XML参数方法。(如果是wordpress网站,可以直接使用wp_remote_post来请求)

具体代码如下:


<?php
//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'才可以。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

相关教程

  • 现在很多网站都安装了SSL证书来实现加密访问,SSL证书一般是申请后可以使用一年,一年到期后再次申请重新布署。但有些站长会遇到这样的情况,网站旧
  • WordPress程序里的某个PHP文件,如果想连接数据库,一般需要填写数据库名、数据库用户、密码等信息,如下:<?php$conn=mysqli_connect(&qu
  • 我们做网站一般都是做自适应结构,不同用户使用不同的浏览设备可以浏览不同的版面的网站。但有时为了特殊的要求,我们不希望自己的网站手机端自适应,
  • 我们制作网站前台提交发布界面时,富文本编辑器常常使用kindeditor 编辑器,kindeditor 编辑器支持用户上传图片和附件,通常情况下编辑器是不限制附件
  • notepad是一款比较好用的网页编辑软件,学建站网张启亚老师也一直在用notepad。notepad有一个比较实用的功能就是它会自动保存之前打开的文件列表,但
  • 在PHP中,数组是一种非常常见且重要的数据类型。在使用数组时,通常需要不断地向数组中添加新的元素,以满足我们的需求。那么,在PHP中,如何向已有数
  • 网站中的滑动选择开关是比较常见的开关选择器,方便用户可以打开或者关闭某个参数。效果如下图:下面分享一下网站中的滑动选择开关的制作代码:HTM
  • 我们有些同学做的是下载类网站,如果使用普通的A标签来下载,很容易被别采集,这样会严重影响网站的运营。那么怎么隐藏下载地址呢?让资源的下载地址
  • 在https页面中,如果调用了http资源,那么浏览器就会抛出一些错误。我们可以通过一个meta 标签来限制网站调用http资源,自动将http替换成https资源。
  • 我们做网站时,往往需要制作图片列表,但有时每个图片宽度设置一样后,高度会不一样,这就导致了网站版面排序混乱。如下图:怎么解决这种排序混乱的