如何使用CURL扩展来发送和接收XML格式的数据 如何使用CURL扩展来发送和接收XML格式的数据给个例子,新手进入PHP,据查看的资料来看,可以使用SOCKET和CURL来发送和接收XML数据请兄弟们帮帮忙。对方是使用JAVA发送过来XML的数据! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我已经查询了很多网络上的资料。$header[]="Content-Type: text/xml; charset=utf-8";$header[]="User-Agent: Apache/1.3.26 (Unix)";$header[]="Host: www.test.com";$header[]="Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";$header[]="Connection: keep-alive";$header[]="Content-Length: ".strlen($acContent);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $acContent);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);$res = curl_exec($ch);curl_close($ch); acContent为xml格式的内容另一段通过$HTTP_RAW_POST_DATA获得xml内容但是我接收不到值,,我是操作是系统是WINXP,在本机上收发。 不添加发送头信息,后台用$_POST接受试试======================================$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);//curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $acContent);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);$res = curl_exec($ch);curl_close($ch); print_r($res); 1.代码我本地测试了下是可以的,其中$url是一本地文件地址(http://localhost...),$acContent是file_get_contents拿到的一个xml文件。2.自己google点资料吧,http://www.samtseng.liho.tw/~samtz/blog/?p=1474 要么就用xxx=$xml这种格式传.要么就用file_get_contents("php://input");来获取. 貌似lz对HTTP协议还不太理解。PHP主要是用来处理HTTP服务的语言,如果对方发送的信息遵循HTTP协议,你不需要做任何特殊的设定,直接从$_REQUEST、$_POST等变量中就可以得到想要的数据。CURL是客户端程序,用它可以做HTTP客户端请求,但是接收HTTP协议下的通信数据不需要它。lz可以用axis tcpmon监视一下正常HTTP通信下传送的数据,熟悉一下HTTP协议,然后再监视对方提供的Java通信状况,看看他们提供的客户程序是否有错误。 $HTTP_RAW_POST_DATA;-->接收不到JAVA发过来的POST数据. enctype="multipart/form-data"有效的时候$HTTP_RAW_POST_DATA是无效的,lz看看是不是此原因。 如果需要上传文件,只能用$_POST。不过,最好还是客户端遵循HTTP协议的参数传送方式比较好。看一下这里的说明:http://www.php.net/manual/en/reserved.variables.php 呵呵,要按http协议发送,估计java那边的哥们就不乐意了,soap协议多方便,事实上soap就是解决不用语言交互的问题而设计的,当然lz能和客户端那边协商是最好啦。lz没测试file_get_contents("php://input");这个吗? soap协议跟HTTP协议发生冲突?什么理论?如果是标准SOAP的话,直接用PHP的SOAP接口就可以了,不用现在这么费劲。 不是冲突,soap肯定也是基于http,就是post的格式不同而已。我的意思是http协议下就是post a=1&b=1&c=1这样的串,而soap就是整个xml串提交,由php这边解析你如果让java端按http协议发送,需要java端解析xml。 估计简单的用file_get_contents可能可以。用Curl库的话,只需了解如何发送请求和接收请求,网上这种代码很多。用Socket与Curl差不多。怕Java那边会有点“不合作”。 谢谢各位,我现在发送和接收XML都没有什么问题了。过段时间正式完成后,我会公布心得,和大家分享!现在还有一个问题。我如何接收ECHO回来的值!http://topic.csdn.net/u/20090620/00/f455bfa4-9ec0-4df8-98c5-4d86e43813fd.html wodpress主题文件中,转换文件格式的问题 PHP生成验证码的时候不能生成图片,都是缺省图片的图片标 有图有代码 GD库使用正常 一小段PHP代码问题 求助php调整显示顺序(急!!!) 哪里有php基础教程? php登陆页面具体实现 用ftp_put()出现的问题,请教 重大发现!!!在线等 位什么市面上关于PHP的书籍这么少呢? [help] php的http上传文件问题 哪位高手帮忙解决下 关于php文件下载问题 linux中文乱码问题,在线等,
$header[]="User-Agent: Apache/1.3.26 (Unix)";
$header[]="Host: www.test.com";
$header[]="Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
$header[]="Connection: keep-alive";
$header[]="Content-Length: ".strlen($acContent);$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $acContent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res = curl_exec($ch);
curl_close($ch); acContent为xml格式的内容另一段通过$HTTP_RAW_POST_DATA获得xml内容
但是我接收不到值,,我是操作是系统是WINXP,在本机上收发。
======================================
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $acContent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res = curl_exec($ch);
curl_close($ch);
print_r($res);
2.自己google点资料吧,http://www.samtseng.liho.tw/~samtz/blog/?p=1474
要么就用file_get_contents("php://input");来获取.
貌似lz对HTTP协议还不太理解。PHP主要是用来处理HTTP服务的语言,如果对方发送的信息遵循HTTP协议,你不需要做任何特殊的设定,
直接从$_REQUEST、$_POST等变量中就可以得到想要的数据。CURL是客户端程序,用它可以做HTTP客户端请求,但是接收HTTP协议下的通信数据不需要它。lz可以用axis tcpmon监视一下正常HTTP通信下传送的数据,熟悉一下HTTP协议,然后再监视对方提供的Java通信状况,看看他们提供的客户程序是否有错误。
-->
接收不到JAVA发过来的POST数据.
enctype="multipart/form-data"有效的时候$HTTP_RAW_POST_DATA是无效的,
lz看看是不是此原因。
不过,最好还是客户端遵循HTTP协议的参数传送方式比较好。看一下这里的说明:
http://www.php.net/manual/en/reserved.variables.php
lz没测试file_get_contents("php://input");这个吗?
什么理论?如果是标准SOAP的话,直接用PHP的SOAP接口就可以了,不用现在这么费劲。
我的意思是http协议下就是post a=1&b=1&c=1这样的串,而soap就是整个xml串提交,由php这边解析
你如果让java端按http协议发送,需要java端解析xml。