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文件
网站路径:https://www.cdcxhl.com/article18/hjoegp.html

成都网站建设公司_创新互联,为您提供定制开发品牌网站制作小程序开发自适应网站用户体验网站策划

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司