Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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读取发布到我的PHP页面的XML_Php_Xml - Fatal编程技术网

PHP读取发布到我的PHP页面的XML

PHP读取发布到我的PHP页面的XML,php,xml,Php,Xml,我有一个PHP页面,需要读取发布到此页面的XML。 文章将按内容类型完成:application/xml(而不是application/x-www-form-urlencoded) 例如,我的页面名为test.php,另一台服务器将把XML发布到此页面(test.php)。 我的问题是如何为test.php页面创建一个代码来读取发布到该页面的xml 更新 首先,非常感谢你的回答和花时间帮助我。 我会尽力更好地解释我的问题。 我正在创造一个信使机器人。 我正在使用一个叫做“botplataform

我有一个PHP页面,需要读取发布到此页面的XML。 文章将按内容类型完成:application/xml(而不是application/x-www-form-urlencoded)

例如,我的页面名为test.php,另一台服务器将把XML发布到此页面(test.php)。 我的问题是如何为test.php页面创建一个代码来读取发布到该页面的xml

更新

首先,非常感谢你的回答和花时间帮助我。 我会尽力更好地解释我的问题。 我正在创造一个信使机器人。 我正在使用一个叫做“botplataform”的平台表单。 更多信息请点击此处:

基本上,这个平台的工作原理如下: 我在Instant messager(在本例中为MSN)上键入一条消息,我键入的消息通过XML POST发送到我的PHP页面。 该平台形式如何实现这一点的信息如下:

“post请求内容类型为 应用程序/xml(非 application/x-www-form-urlencoded) 你应该把整个身体读作 xml数据,您无法读取任何 参数。”

我的PHP文件需要“读取”这个XML,才能知道用户在MSN上键入了什么。然后我将我的答案发送回botplataform,botplataform将消息发送给用户

我可以将答案发送到botplataform,但是我无法读取botplataform发送到我的php文件的XML

如果你想测试,只需在你的MSN上安装一个ad mainframe(at)xquad(dot)com(dot)br,并与之交谈即可。 它只会回答“Em manutencao” 但是它可以工作,php创建一个XML并对其进行响应


非常感谢,Flávio

您可以使用
$HTTP_RAW_POST_DATA
()或
php://input
stream

发件人:

php://input
允许您读取原始
POST
数据。它是
$HTTP\u RAW\u POST\u DATA
的一种内存占用较少的替代方案,不需要任何特殊的php.ini指令<代码>php://input不适用于
enctype=“多部分/表单数据”

更新:也许一些例子会有所帮助

下面是一个简单的脚本,我将调用
input.php

<?php
  echo file_get_contents('php://input');
?>
<?php
  echo file_get_contents($_FILES['name']['tmp_name']);
?>
使用cURL上载文件:

curl-F“name=@test.xml”http://localhost/input.php

curl-F“name=@test.xml;type=application/xml”http://localhost/input.php

两者都不会从
input.php
输出任何内容。但是,如果您修改脚本以查看
$\u文件
数组(或者以处理正常上载到PHP的方式),您将获得内容

我将调用新脚本
form.php

<?php
  echo file_get_contents('php://input');
?>
<?php
  echo file_get_contents($_FILES['name']['tmp_name']);
?>

使用curl进行文件上载:

curl-F“name=@test.xml;type=application/xml”http://localhost/form.php

将输出
test.xml
的内容

在这两种方法之间,您应该能够处理来自另一台服务器的
POST
文件或数据

第二次更新:以这种方式强制
应用程序/xml
将停止
$\u文件
的工作,但随后您将返回到
php://input
再次工作:


curl-F“name=@test.xml”-H“内容类型:application/xml”

您可以使用
$HTTP\u RAW\u POST\u DATA
()或
php://input
stream

发件人:

php://input
允许您读取原始
POST
数据。它是
$HTTP\u RAW\u POST\u DATA
的一种内存占用较少的替代方案,不需要任何特殊的php.ini指令<代码>php://input不适用于
enctype=“多部分/表单数据”

更新:也许一些例子会有所帮助

下面是一个简单的脚本,我将调用
input.php

<?php
  echo file_get_contents('php://input');
?>
<?php
  echo file_get_contents($_FILES['name']['tmp_name']);
?>
使用cURL上载文件:

curl-F“name=@test.xml”http://localhost/input.php

curl-F“name=@test.xml;type=application/xml”http://localhost/input.php

两者都不会从
input.php
输出任何内容。但是,如果您修改脚本以查看
$\u文件
数组(或者以处理正常上载到PHP的方式),您将获得内容

我将调用新脚本
form.php

<?php
  echo file_get_contents('php://input');
?>
<?php
  echo file_get_contents($_FILES['name']['tmp_name']);
?>

使用curl进行文件上载:

curl-F“name=@test.xml;type=application/xml”http://localhost/form.php

将输出
test.xml
的内容

在这两种方法之间,您应该能够处理来自另一台服务器的
POST
文件或数据

第二次更新:以这种方式强制
应用程序/xml
将停止
$\u文件
的工作,但随后您将返回到
php://input
再次工作:


curl-F“name=@test.xml”-H“内容类型:application/xml”

你好,蒂姆php://input 是否可以使用application/xml?因为他正在为我返回空白。我使用的代码是“文件获取内容(”php://input“”;“ThanksIt应该可以工作,除非它是由提到的enctype发送的(在这种情况下,可以进行一些黑客攻击,但没有一个是真正令人愉快的)。TIm,是的,xml是由应用程序/xml enctype发布的:(你知道在这种情况下我能做些什么吗?application/xml不是enctype,而是mimetype。我添加了一些示例代码和测试,也许更多关于
发布的代码的信息会有所帮助。你好,Timphp://input 将与application/xml一起使用吗?因为为我返回空白。我使用此代码“file\u get\u contents(”php://input“”;“ThanksIt应该可以工作,除非它是由提到的enctype发送的(在这种情况下,可以进行一些黑客攻击,但没有一个是真正令人愉快的)。TIm,是的,xml是由应用程序/xml enctype发布的:(你知道在这种情况下我能做什么吗?application/xml不是enctype,而是mimetype。我添加了一些示例代码和测试,也许更多关于
发布的代码的信息会有所帮助。