PHP cURL无法向api发送POST请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP cURL无法向api发送POST请求相关的知识,希望对你有一定的参考价值。

我正在尝试将发送请求发送到SMS api并使用php和cURL从他们那里收到反馈。但是,当我尝试通过表单发送相同的数据时,cURL对我不起作用。

$POST = array(
            'data' => $xml1

    );
$url = 'URL';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $POST );
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo "<input type="textarea" id="txt"  style='width:600px' value='$result'></input>";
echo "<input type="textarea" id="txt1" name='data1' style='width:600px' value='".$info['request_header']."'></input>";

而XML则是

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE MESSAGE SYSTEM "http://127.0.0.1:80/psms/dtd/messagev12.dtd">
<MESSAGE VER="1.2">
<USER USERNAME="abc" PASSWORD="pqr" />
<SMS UDH="0" CODING="1" TEXT="SMS TEXT" PROPERTY="0" ID="1" TEMPLATE="" EMAILTEXT="" ATTACHMENT=""><ADDRESS FROM="someone" TO="91xxxxxxxxxx" EMAIL="" SEQ="1" TAG="some clientside random data"/>
</SMS>
</MESSAGE>

但使用表单工作精细,代码表格

echo "<form action="URL" method="POST" target="_blank">";

    echo "<input type="textarea" id="txt" name='data' style='width:600px' value='$xml1'></input>";
    echo "<input type="SUBMIT" name="action" value="send">";
    echo "</form>";

当我使用表单发送数据时,它显示已发送状态,但是当我使用curl发送时,它显示输出为:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <MESSAGEACK>
    <Err Code="65535" Desc="The Specified message does not conform to DTD"/>
</MESSAGEACK> 

谢谢

答案

而不是创建数组。

$POST = array('data' => $xml1);

只需做$POST => $xml1

另一答案

你是如何设置$xml1变量的?

确保使用qazxsw poi而不是qazxsw poi

以上是关于PHP cURL无法向api发送POST请求的主要内容,如果未能解决你的问题,请参考以下文章

如何向php服务器发送数据为json的post请求

PHP中怎样发送post请求并获取网页?

Vue JS Axios Post 请求向 PHP 发送 Null

如何用php向服务器发送post请求

如何在 cURL POST 请求中使用数组

React 无法从 PHP API 获取响应正文