以下是一個編寫好的post?XML?的類:

成都創(chuàng)新互聯(lián)公司是一家專注于成都網站建設、網站建設與策劃設計,德惠網站建設哪家好?成都創(chuàng)新互聯(lián)公司做網站,專注于網站建設十余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:德惠等地區(qū)。德惠做網站價格咨詢: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庫發(fā)送?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,這個庫正好能夠完成你的需要,具體代碼的編寫需要示例數(shù)據(jù)與網站才能測試,以下是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);
?
無論是返回 ?json 還是 xml 數(shù)據(jù),區(qū)別僅在于數(shù)據(jù)的格式。
返回 xml 格式數(shù)據(jù)示例如下:
?php
//指示返回數(shù)據(jù)格式為?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
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;
}
//?發(fā)送行為
$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是可以的,但是參數(shù)設置比較麻煩。這種情況有一些現(xiàn)成的類庫實現(xiàn),提供一個簡單的示例
PHP生成XML的方法很多,這里演示最基本,最簡單的字符串構造法。就是使用字符串構造或者拼接成xml數(shù)據(jù)格式,然后輸出或者生成xml文件。
?php
$data?=?array(
array(
'title'???=?'baidu',
'country'?=?'china',
'name'????=?'百度',
),
array(
'title'???=?'google',
'country'?=?'usa',
'name'????=?'谷歌',
)
);
//構造xml數(shù)據(jù)格式
$xml?=?"?xml?version=\"1.0\"?encoding=\"utf-8\"?\n";
$xml?.=?"data\n";
foreach?($data?as?$itm)?{
//循環(huán)構造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數(shù)據(jù)
echo?$xml;
?
生成的數(shù)據(jù)格式如下:
php返回xml,首先封裝好xml數(shù)據(jù)格式,然后return即可。示例如下:
?php?
//name
$name="zhidao";
//age
$age=10;
//構造xml數(shù)據(jù)格式
$xml?=?XML
?xml?version="1.0"?encoding="utf-8"?
baidu
name?{$name}?/name
age{$age}/age
/baidu
XML;
return?$xml;
?
接收指定IP的數(shù)據(jù)包,其他IP都要過濾吧,那就用防火墻來搞吧
使用的是client段的獲取方式,用client的可以指定IP,代碼大概如下
public void SendMessage()
{
ASCII = Encoding.ASCII;
// 構造用于發(fā)送的 字節(jié)緩沖.
Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);
// 構造用于接收的 字節(jié)緩沖.
Byte[] recvBytes = new Byte[256];
// IP地址.
IPAddress localAddr = IPAddress.Parse("192.168.19.81");
// 接入點.
IPEndPoint ephost = new IPEndPoint(localAddr, PORT);
// 第一個參數(shù):AddressFamily = 指定 Socket 類的實例可以使用的尋址方案。
// Unspecified 未指定地址族。
// InterNetwork IP 版本 4 的地址。
// InterNetworkV6 IP 版本 6 的地址。
//
// 第二個參數(shù):SocketType = 指定 Socket 類的實例表示的套接字類型。
// Stream 一個套接字類型,支持可靠、雙向、基于連接的字節(jié)流,而不重復數(shù)據(jù),也不保留邊界。
// 此類型的 Socket 與單個對方主機通信,并且在通信開始之前需要建立遠程主機連接。
// 此套接字類型使用傳輸控制協(xié)議 (Tcp),AddressFamily 可以是 InterNetwork,也可以是 InterNetworkV6。
//
// 第三個參數(shù):ProtocolType = 指定 Socket 類支持的協(xié)議。
// Tcp 傳輸控制協(xié)議 (TCP)。
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
// 嘗試連接主機.
s.Connect(ephost);
//Console.WriteLine("向服務器發(fā)送到了:{0}", SEND_MESSAGE);
// 向主機發(fā)送數(shù)據(jù).
// s.Send(sendBytes, sendBytes.Length, SocketFlags.None);
// 接收服務器的應答.
Int32 bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);
StringBuilder buff = new StringBuilder();
// while (bytes 0)
// {
// 將緩沖的字節(jié)數(shù)組,裝換為字符串.
// 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);
// 再次接受,看看后面還有沒有數(shù)據(jù).
//bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);
// }
textBox1.Text = iCount.ToString();
}
catch (Exception ex)
{
MessageBox.Show("連接/發(fā)送/接收過程中,發(fā)生了錯誤!");
MessageBox.Show(ex.Message);
//Console.WriteLine("連接/發(fā)送/接收過程中,發(fā)生了錯誤!");
//Console.WriteLine(ex.Message);
//Console.WriteLine(ex.StackTrace);
}
finally
{
s.Close();
}
網站標題:php發(fā)送xml數(shù)據(jù) php讀取xml文件
網站路徑:http://chinadenli.net/article18/hjoegp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、品牌網站制作、小程序開發(fā)、自適應網站、用戶體驗、網站策劃
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)