php 如何发送xml数据,PHP-PHP如何以post形式发送xml数据

PHP如何以POST形式发送XML数据,PHP如何接收XML文件

准备两个PHP文件:一个是发送数据的postXml.php,另一个是接收数据的getXml.php

发送XML: postXml.php

//准备XML数据

$xmlData = "

ad775b217

tWy3zC3xUgQMR5coXif5SA< /FromUserName >

1366181013

text

我的测试

5867702771251151243

";

第一种发送方式,也是推荐的方式, 使用CURL:

$url = 'http://cnwyt.net/xml/getXml.php'; //接收xml数据的文件

$header[] = "Content-type: text/xml"; //定义content-type为xml,注意是数组

$ch = curl_init ($url);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);

$response = curl_exec($ch);

if(curl_errno($ch)){

print curl_error($ch);

}

curl_close($ch);

第二种发送方式,使用Socket:

$url = 'http://cnwyt.net/xml/getXml.php';

$header[] = "Content-type: text/xml";//定义content-type为xml

$server ='http://wang.net/';

$contentLength = strlen($xml_data);

$fp = fsockopen('127.0.0.1', 80);

fputs($fp, "POST $url HTTP/1.0\r\n");

fputs($fp, "Host: $server\r\n");

fputs($fp, "Content-Type: text/xml\r\n");

fputs($fp, "Content-Length: $contentLength\r\n");

fputs($fp, "Connection: close\r\n");

fputs($fp, "\r\n"); // all headers sent

fputs($fp, $xmlData );

$result = '';

while (!feof($fp)) {

$result .= fgets($fp, 128);

}

var_dump($result);

接收XML: getXml.php

//接收数据,并将数据写入文件中

//$xml = $HTTP_RAW_POST_DATA;

$xml = $GLOBALS['HTTP_RAW_POST_DATA'];

//将xml数据写入文本文件"a.txt"中

$handle = fopen('a.txt','a+');

fwrite($handle,$xml);

问题:为什么不使用$_POST接收?

解答:由于PHP默认只识别application/x-www.form-urlencoded标准的数据类型,对型如text/xml的内容无法解析为$_POST数组,故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收。注意,$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。

扩展阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值