php-发送和接收xml文档
我正在尝试从同样支持php的Web服务器获取xml文档。 这与传统web服务的功能类似,但我想用php实现它。这可能吗 更具体地说,我的需要- 我想将一个xml文档作为请求发送到服务器,让PHP对其进行一些处理,然后将一个xml文档作为响应发送给我 提前谢谢。也许你只是想要 如果不是SOAP,那么您可以发送XML POST请求并使用php-发送和接收xml文档,php,Php,我正在尝试从同样支持php的Web服务器获取xml文档。 这与传统web服务的功能类似,但我想用php实现它。这可能吗 更具体地说,我的需要- 我想将一个xml文档作为请求发送到服务器,让PHP对其进行一些处理,然后将一个xml文档作为响应发送给我 提前谢谢。也许你只是想要 如果不是SOAP,那么您可以发送XML POST请求并使用$XML=file\u get\u contents('XML')php://input');将其转储到一个变量中,您可以将该变量提供给其他XML处理器 处理后,您可
$XML=file\u get\u contents('XML')php://input');
将其转储到一个变量中,您可以将该变量提供给其他XML处理器
处理后,您可以使用标题('Content-Type:text/xml')编码>(或应用程序/xml)并输出修改后的xml文档。使用curl
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$xmlString);
//execute post
$result = curl_exec($ch);
读取XML请求正文的超级简单示例:
$request = http_get_request_body();
if($request && strpos($request, '<?xml') !== 0){
// not XML do somehting appropriate
} else {
$response = new DomDocment(); // easier to manipulate when *building* xml
$requestData = DomDocument::load($request);
// process $requestData however and build the $response XML
$responseString = $response->saveXML();
header('HTTP/1.1 200 OK');
header('Content-type: application/xml');
header('Content-length: ', strlen($responseString));
print $responseString;
exit(0);
}
$request=http\u get\u request\u body();
如果($request&&strpo)($request,'为什么不使用和另一个而不是php://input
?因为这些不是标准功能;它们需要一个可能不可用的PECL模块。php://input 适用于任何地方。+1…没错,但除非是内部网,否则这应该不是问题。我还没有部署到不允许安装PECL扩展的主机上s或PEAR软件包自2000年开始。谢谢Tino,file\u get\u contents('php://input“);
做了一件好事,http\u get\u request\u body
函数在我使用的服务器中不可用。我看到“调用未定义的函数http\u get\u request\u body()服务器报告的错误。我正在运行PHP版本5.2.17,可以访问phpinfo(),但我不确定需要哪个模块才能使服务器停止抱怨找不到http_get_request_body()。感谢您的需要。或者,您可以用文件_get_contents('s)替换该调用php://input')
正如感谢所建议的那样。但我认为我的托管服务没有安装pecl\u http模块。我发现pecl的唯一参考是sqlite。但是文件获取内容API工作正常。