将XML文件http post到某个地址

curl库的使用
服务器君一共花费了215.375 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

最近做了个小任务,短信、彩信的群发功能。合作方提供了一个接口,我们只要把需要发送的内容拼成一个XML,再http post到那个地址就行。这里用到了curl这个库,简单记录下用法。

下面是短信群发的小程序,先从一个上传的电话号码文本获取号码,然后获取内容发送即可。

<?php

if($_FILES['phone_num']['error']>0) {
	echo 'Problem:';
  	switch ($_FILES['phone_num']['error'])
  	{
		//1表示文件超过php配置里的大小限制
  		case 1: echo 'File exceeded max in phi.ini!';break;
		//2表示超过最大限制
   		case 2: echo 'File exceeded max_file_size';break;
		//3表示部分上传
   		case 3: echo 'File only partially uploaded';break;
		//4表示没有上传
   		case 4: echo 'No file upload'; break;
  	}
	exit;
}

// 如果文件类型非纯文本,输出提示 
if ($_FILES['phone_num']['type'] != 'text/plain') {
	echo 'Problem:file is not plain text';
	exit;
}

// 转移文件路径,转移失败,输出错误
$dir = dirname(__file__).'/upload/';
$filename = $_FILES['phone_num']['name'];
$savepath = "$dir/$filename";
 
if (is_uploaded_file($_FILES['phone_num']['tmp_name'])) {
	$state = move_uploaded_file($_FILES['phone_num']['tmp_name'], $savepath);
	//如果上传成功,预览
	if($state)
	{
   		//echo "<img src='$filename' alt='$filename' /> ";
	}
	/**
	if (!move_uploaded_file($_FILES['phone_num']['tmp_name'], $savepath)) {
		echo 'Problem could not move file to destination directory';
		exit;
	}
	*/
}
else 
{
	echo 'Problem :possible file upload attack file:';
	echo $_FILES['phone_num']['name'];
	exit;
}

$pn = file_get_contents($savepath); 
$content = $_POST['content'];

$xml_data = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TaskDataTransfer4EReq xmlns="http://www.aspirehld.com/iecp/TaskDataTransfer4EReq">
<eid>3100</eid>
<username>lwxkk</username>
<password>1234567</password>
<src>106581036177</src>
<destmsisdn>'.$pn.'</destmsisdn>
<content type="sms">
	<title>'.$content.'</title>
</content>
</TaskDataTransfer4EReq>';

$url = 'http://www.nowamagic.net/service/taskSubmit';//接收XML地址

$header = "Content-type: text/xml";//定义content-type为xml
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $url);//设置链接
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头
curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);//POST数据
$response = curl_exec($ch);//接收返回信息
if(curl_errno($ch)){//出错则显示错误信息
    print curl_error($ch);
}
curl_close($ch); //关闭curl链接
echo $response;//显示返回信息
?>

彩信群发则稍稍麻烦些,需要按要求把文本、图片、mms.smil等文件按规则命名并打包好,但是发送的原理还是一样的。

<?php
// 对彩信包的处理繁琐但是简单,这里省略
$encoded = chunk_split(base64_encode($file_content));

$xml_data = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TaskDataTransfer4EReq xmlns="http://www.aspirehld.com/iecp/TaskDataTransfer4EReq">
<eid>310</eid>
<username>lwxk</username>
<password>123456</password>
<src>106581036177</src>
<destmsisdn>'.$pn.'</destmsisdn>
<content type="mms">
<title>'.$title.'</title>
<mmsfile>'.$encoded.'</mmsfile>
</content>
</TaskDataTransfer4EReq>';

$url = 'http://www.nowamagic.net/service/taskSubmit';//接收XML地址

$header = "Content-type: text/xml";//定义content-type为xml
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $url);//设置链接
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头
curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);//POST数据
$response = curl_exec($ch);//接收返回信息
if(curl_errno($ch)){//出错则显示错误信息
    print curl_error($ch);
}
curl_close($ch); //关闭curl链接
echo $response;//显示返回信息
?>

其实很简单,就是将内容拼成一个XML字符串,按要求base_64编好码,再post到该地址就行。

本文地址:http://www.nowamagic.net/librarys/veda/detail/109,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/109

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《致加西亚的信》 阿尔伯特·哈伯德(Hubbard.E.) (作者), 赵立光 (译者), 艾柯 (译者)

《致加西亚的信(经典盒装版)》内容简介:美西战争爆发以后,美国必须立即与古巴起义军首领加西亚取得联系,并获得他的合作。但当时,加西亚身在古巴的深山里——没有人知道他的确切地点,所以没法与他取得联系。这时,有人向总统推荐一个名叫罗文的人,说他有办法找到加西亚,而且也只有他才能找得到。他们找来罗文,交给他一封写给加西亚的信。三周后,罗文徒步走过一个危机四伏的国家,最终把那封信交给了加西亚。 此后,罗文的事迹被传为佳话,“送信”成为了敬业、忠诚、勤奋的象征,罗文便成了每个领导都想找到的人和每个员工都应该学习和效仿的榜样。

更多计算机宝库...