Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-发送和接收xml文档_Php - Fatal编程技术网

php-发送和接收xml文档

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处理器 处理后,您可

我正在尝试从同样支持php的Web服务器获取xml文档。 这与传统web服务的功能类似,但我想用php实现它。这可能吗

更具体地说,我的需要- 我想将一个xml文档作为请求发送到服务器,让PHP对其进行一些处理,然后将一个xml文档作为响应发送给我

提前谢谢。

也许你只是想要

如果不是SOAP,那么您可以发送XML POST请求并使用
$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工作正常。