重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
?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是可以的,但是参数设置比较麻烦。这种情况有一些现成的类库实现,提供一个简单的示例
接收指定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的方法很多,这里演示最基本,最简单的字符串构造法。就是使用字符串构造或者拼接成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,首先封装好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;
?
你先echo 一个值出来看看,如 echo 'abc';
看这边能alert出来吗
不过你这个ajax提交,是最原始的xmlhttprequest
现在都用jquery,估计很早以前没人直接用xmlhttprequest了
建议你用jquery