php发送xml数据 php读取xml文件

php如何post XML到指定服务器

以下是一个编写好的post XML 的类:

成都创新互联公司是一家专注于成都网站建设、网站建设与策划设计,德惠网站建设哪家好?成都创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:德惠等地区。德惠做网站价格咨询:18982081108

?php

class xmlSender {

/**

* 构造器

* 校验 cURL 是不是可用

*/

function xmlSender()

{

if ( !extension_loaded('curl') ) {

trigger_error("You need cURL loaded to use this class", E_USER_ERROR);

}

}

/**

* 使用了cURL库发送 xml 内容

*/

function send( $str_xml, $str_url, $str_page, $boo_ssl = false )

{

$str_header  = "POST " . $str_page . " HTTP/1.0 \r\n";

$str_header .= "MIME-Version: 1.0 \r\n";

$str_header .= "Content-type: application/PTI26 \r\n";

$str_header .= "Content-length: " . strlen($str_xml) . " \r\n";

$str_header .= "Content-transfer-encoding: text \r\n";

$str_header .= "Request-number: 1 \r\n";

$str_header .= "Document-type: Response\r\n";

$str_header .= "Interface-Version: Site 1.0 \r\n";

$str_header .= "Connection: close \r\n\r\n";

$str_header .= $str_xml;

$res_curl = curl_init();

curl_setopt($res_curl, CURLOPT_URL, $str_url);

curl_setopt($res_curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($res_curl, CURLOPT_TIMEOUT, 30);   

curl_setopt($res_curl, CURLOPT_CUSTOMREQUEST, $str_header);

curl_setopt($res_curl, CURLOPT_FOLLOWLOCATION, 1);

if ( $boo_ssl ) {

curl_setopt($res_curl, CURLOPT_SSL_VERIFYHOST,  0);

curl_setopt($res_curl, CURLOPT_SSL_VERIFYPEER, false);

}

$str_data = curl_exec($res_curl);

if ( curl_errno($res_curl) ) {

trigger_error(curl_error($res_curl), E_USER_ERROR);

} else {

curl_close($res_curl);

}

return $str_data;

}

}

$str_xml = 'xxxblablabla/xxxyyyblebleble/yyyzzzzbliblibli/zzz';

$o = new xmlSender;

print_r($o-send($str_xml, "", "/yyy/x.x.x/", true));

?

=========================================

这几天我正在研究cURL,这个库正好能够完成你的需要,具体代码的编写需要示例数据与网站才能测试,以下是post的示例:

?php

$url = '';

// The submitted form data, encoded as query-string-style

// name-value pairs

$body = 'monkey=unclerhino=aunt';

$c = curl_init($url);

curl_setopt($c, CURLOPT_POST, true);

curl_setopt($c, CURLOPT_POSTFIELDS, $body);

curl_setopt($c, CURLOPT_RETURNTRANSFER, true);

$page = curl_exec($c);

curl_close($c);

?

怎样通过php程序返回xml格式的数据

无论是返回  json 还是 xml 数据,区别仅在于数据的格式。

返回 xml 格式数据示例如下:

?php

//指示返回数据格式为 xml

header('Content-Type: text/xml');

?

?xml version="1.0" encoding="utf-8" ?

?php

//构造 xml 

//$xmldata = "  

//    data  

//       site_name$site[name]/site_name

//       ........   

//    data";

echo $xmldata;

?

php 如何发送xml报文

?php

if( $_SERVER['REQUEST_METHOD'] === 'POST' ){

// 接收

$content = file_get_contents('php://input');

$xml = simplexml_load_string($content);

echo "来自XML接收方的响应\n";

print_r( get_object_vars($xml) );

exit;

}

// 发送行为

$xml = xml

?xml version="1.0"?

FOX

helloworld/hello

/FOX

xml;

$setting = array(

'http' = array(

'method' = 'POST',

'user_agent' = 'Client Application Name',

'header' = "Content-type: application/x-www-form-urlencoded",

'content' = $xml

)

);

$context = stream_context_create($setting);

$url = ''. $_SERVER['REQUEST_URI'];

$response = file_get_contents($url, null, $context);

echo $response;

CURL是可以的,但是参数设置比较麻烦。这种情况有一些现成的类库实现,提供一个简单的示例

php输出xml内容

PHP生成XML的方法很多,这里演示最基本,最简单的字符串构造法。就是使用字符串构造或者拼接成xml数据格式,然后输出或者生成xml文件。

?php

$data = array(

array(

'title'   = 'baidu',

'country' = 'china',

'name'    = '百度',

),

array(

'title'   = 'google',

'country' = 'usa',

'name'    = '谷歌',

)

);

//构造xml数据格式

$xml = "?xml version=\"1.0\" encoding=\"utf-8\"?\n";

$xml .= "data\n";

foreach ($data as $itm) {

//循环构造xml单项

$item = "item\n";

$item .= "title" . $itm['title'] . "/title\n";

$item .= "country" . $itm['country'] . "/country\n";

$item .= " name" . $itm['name'] . "/name\n";

$item .= "/item\n";

$xml .=$item;

}

$xml .= "/data\n";

//输出xml数据

echo $xml;

?

生成的数据格式如下:

请问PHP如何返回一个XML?

php返回xml,首先封装好xml数据格式,然后return即可。示例如下:

?php 

//name

$name="zhidao";

//age

$age=10;

//构造xml数据格式

$xml = XML

?xml version="1.0" encoding="utf-8"?

baidu

name {$name} /name

age{$age}/age

/baidu

XML;

return $xml;

?

如何在PHP中使用socket+XML发送数据包

接收指定IP的数据包,其他IP都要过滤吧,那就用防火墙来搞吧

使用的是client段的获取方式,用client的可以指定IP,代码大概如下

public void SendMessage()

{

ASCII = Encoding.ASCII;

// 构造用于发送的 字节缓冲.

Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);

// 构造用于接收的 字节缓冲.

Byte[] recvBytes = new Byte[256];

// IP地址.

IPAddress localAddr = IPAddress.Parse("192.168.19.81");

// 接入点.

IPEndPoint ephost = new IPEndPoint(localAddr, PORT);

// 第一个参数:AddressFamily = 指定 Socket 类的实例可以使用的寻址方案。

// Unspecified 未指定地址族。

// InterNetwork IP 版本 4 的地址。

// InterNetworkV6 IP 版本 6 的地址。

//

// 第二个参数:SocketType = 指定 Socket 类的实例表示的套接字类型。

// Stream 一个套接字类型,支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界。

// 此类型的 Socket 与单个对方主机通信,并且在通信开始之前需要建立远程主机连接。

// 此套接字类型使用传输控制协议 (Tcp),AddressFamily 可以是 InterNetwork,也可以是 InterNetworkV6。

//

// 第三个参数:ProtocolType = 指定 Socket 类支持的协议。

// Tcp 传输控制协议 (TCP)。

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

try

{

// 尝试连接主机.

s.Connect(ephost);

//Console.WriteLine("向服务器发送到了:{0}", SEND_MESSAGE);

// 向主机发送数据.

// s.Send(sendBytes, sendBytes.Length, SocketFlags.None);

// 接收服务器的应答.

Int32 bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

StringBuilder buff = new StringBuilder();

// while (bytes 0)

// {

// 将缓冲的字节数组,装换为字符串.

// String str = ASCII.GetString(recvBytes, 0, bytes);

String str = "";

for (int i = 0; i recvBytes.Length; i++)

{

str = str + recvBytes[i];

}

int iCount = 0;

iCount = int.Parse(str.Substring(13, 6)) ;

// 加入字符串缓存

buff.Append(str);

// 再次接受,看看后面还有没有数据.

//bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

// }

textBox1.Text = iCount.ToString();

}

catch (Exception ex)

{

MessageBox.Show("连接/发送/接收过程中,发生了错误!");

MessageBox.Show(ex.Message);

//Console.WriteLine("连接/发送/接收过程中,发生了错误!");

//Console.WriteLine(ex.Message);

//Console.WriteLine(ex.StackTrace);

}

finally

{

s.Close();

}


分享标题:php发送xml数据 php读取xml文件
分享链接:http://scyanting.com/article/hjoegp.html