如何在php中接收xml请求并发送响应xml?

2022-08-30 23:02:56

因此,我需要构建一个将接收xml请求的应用程序,并且基于此,我将不得不返回响应xml。我知道如何发送请求和接收响应,但我从未以另一种方式完成。我会像这样发送请求:

private function sendRequest($requestXML)
{
    $server = 'http://www.something.com/myapp';
    $headers = array(
    "Content-type: text/xml"
    ,"Content-length: ".strlen($requestXML)
    ,"Connection: close"
    );

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $server);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 100);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $data = curl_exec($ch);



    if(curl_errno($ch)){
        print curl_error($ch);
        echo "  something went wrong..... try later";
    }else{
        curl_close($ch);
    }

    return $data;

}

我的问题是 - 接收端的代码是什么?如何捕获传入的请求?谢谢。


答案 1

一般的想法是读取 POST 值,将其解析为 XML,对其做出业务决策,根据您决定的 API 构建 XML 响应,并将其写入响应中。

读取 POST 值:

$dataPOST = trim(file_get_contents('php://input'));

解析为 XML:

$xmlData = simplexml_load_string($dataPOST);

然后,您将构建一个 XML 字符串(或文档树,如果您愿意),并将其打印到响应中。print() 或 echo() 会做得很好。


答案 2

您在接收端所要做的就是创建一个“正常”的PHP脚本。根据端点和请求服务之间的协议,您需要从正确的位置获取数据,这很可能是一个_GET美元_POST美元的阵列。

您可能需要阅读原始POST数据,如果它没有以$ _POST通过,请在本文中达到峰值

http://www.codediesel.com/php/reading-raw-post-data-in-php/


推荐