1、使用file_get_contents php
这里咱们以发送xml格式的字符串到某个网址为例。post的数据$pdata里面有3个字段 app
/** * 整理数据并调用posttohost()方法 */ public function postData($url,$xml){ $xml = preg_replace("/[\n\t\s]+/",'',$xml); $digest = md5($xml.$this->key); $xml = iconv('UTF-8','GBK',$xml);//注意,签名要在转码前,不然会报错 $pdata = array( 'data_Isdigest' => 'Y', 'logistics_interface' => $xml, 'data_digest' => strtoupper($digest) ); $res = self::posttohost($url,$pdata); var_dump($res); } /** * 经过file_get_contents方式发送 */ public function posttohost($url, $pdata = array()){ $content = http_build_query($pdata);//生成 URL-encode 以后的请求字符串 $content_length = strlen($content); $options = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded; charset=gbk;\r\n". "Content-length: $content_length\r\n", 'content' => $content ) ); return file_get_contents($this->url, false, stream_context_create($options));//stream_context_create建立资源流上下文 }
2、使用curl curl
/** * 使用CURL中POST方式提交数据 *@param string $xml 要提交的$xml数据 */ public function cPost($xml){ $xml = preg_replace("/[\n\t\s]+/",'',$xml);//去除其中的特殊字符、空格和换行 $digest = md5($xml.$this->key); $data_digest = strtoupper($digest); $xml = iconv('UTF-8', 'GBK',$xml); $curlPost = 'data_Isdigest=Y&logistics_interface='.$xml.'&data_digest='.$data_digest; $ch = curl_init();//初始化curl会话,返回一个句柄 curl_setopt($ch, CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_POST, 1);//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的同样 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);//将 curl_exec() 获取的信息以文件流的形式返回,而不是直接输出 $res = curl_exec($ch); curl_close($ch); var_dump(self::xmlToArray($res)); }