php发送xml数据请求,php读取xml接口数据

php 如何发送xml报文

?php

我们提供的服务有:网站设计制作、成都网站建设、微信公众号开发、网站优化、网站认证、阿图什ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的阿图什网站制作公司

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中使用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的方法很多,这里演示最基本,最简单的字符串构造法。就是使用字符串构造或者拼接成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接收不到xmlhttprequest发送的数据呢?

你先echo 一个值出来看看,如 echo 'abc';

看这边能alert出来吗

不过你这个ajax提交,是最原始的xmlhttprequest

现在都用jquery,估计很早以前没人直接用xmlhttprequest了

建议你用jquery


网站栏目:php发送xml数据请求,php读取xml接口数据
文章出自:http://scyanting.com/article/hopicg.html