求教 PHP 如何用 post 发送 xml 数据请求?

工作上碰到需要通过post发送xml数据请求第三方接口,由于没接触过XML类型的请求,Google了一下,找出来的都是通过curl来请求的。代码如下:

        $xmlData = "cmd=1234&msg=<?xml version='".$q."' encoding='".$e."'?>
        <msg v='1.0' id='123456'>
        <head>
        <agentid>123456</agentid>
        <cmd>1234</cmd>
        <timestamp>20190813150813</timestamp>
        <cipher>abcdgsde123</cipher>
        </head>
        <body><file lotteryid='123' issue='20190813'/></body>
        </msg>";
        $header[] = "Content-type: text/xml";
        $ch = curl_init ($url);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
        $response = curl_exec($ch);

xml请求参数格式是按对面提供文档来的,但一直没有请求成功,第三方接口那边返回的信息是没有传入xmlData这些数据进去,无奈他们也没有PHP的DEMO示例可以参考,自己网上找的文章又千篇一律。
请问下xml请求是否只能通过curl方式,有其他方法吗?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
Epona
最佳答案

在php程序内的话也就是 curl 了, 检查一下自己拼接的xml格式是否正确,以及curl的时候 是否需要添加一些header

2个月前 评论
讨论数量: 4

可以不使用curl来发起请求,但是太麻烦且不方便控制,不建议使用,附不使用curl的方法:https://thisinterestsme.com/php-post-reque...

2个月前 评论
Epona

在php程序内的话也就是 curl 了, 检查一下自己拼接的xml格式是否正确,以及curl的时候 是否需要添加一些header

2个月前 评论

@Epona 仔细排查了几遍,结果是添加了不必要的header :joy:

2个月前 评论
lovecn 2个月前
mirrorpen (作者) (楼主) 2个月前

@诺大的院子 这个方法我之前有用过来请求json数据,感觉还可以

2个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!