华为e3531 usb调制解调器-使用PHP脚本发送短信

华为e3531 usb调制解调器-使用PHP脚本发送短信,php,sms,huawei-mobile-services,Php,Sms,Huawei Mobile Services,我正在用PHP7.1编写一个脚本,用华为E3531 usb调制解调器发送短信。没有文档,我有很多困难来找到解决方案。 这是发送短信的脚本,但我收到一个错误100002。 首先,我使用curl恢复令牌和sessionid,然后再次使用curl发布sms <?php //send Sms $curl = curl_init(); $url = "http://192.168.8.1/api/webserver/SesTokInfo"; curl_setopt($curl, CURLOPT_U

我正在用PHP7.1编写一个脚本,用华为E3531 usb调制解调器发送短信。没有文档,我有很多困难来找到解决方案。 这是发送短信的脚本,但我收到一个错误100002。 首先,我使用curl恢复令牌和sessionid,然后再次使用curl发布sms

<?php
//send Sms

$curl = curl_init();
$url = "http://192.168.8.1/api/webserver/SesTokInfo";
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($curl);  
$xml = new simpleXMLElement($content);

$sess_id = $xml->SesInfo;
// echo $sess_id;
$tokInfo= $xml->TokInfo;
curl_close($curl);

$curl2 = curl_init('http://192.168.8.1/api/send-sms/');

$headers = array(
"X-Requested-With: XMLHttpRequest",
'Cookie:'. $sess_id,
'__RequestVerificationToken:'. $tokInfo,
'"Content-Type:text/xml"',
);
$data ="<request><Index>-1</Index><Phones><Phone>7777777</Phone></Phones><Sca/><Content>hello</Content><Length></Length><Reserved>1</Reserved><Date></Date></request" ; 
//print_r($headers);

curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl2, CURLOPT_POST, true);

curl_setopt($curl2, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);

echo $content = curl_exec($curl2);

curl_close($curl2);

获取所引用设备的令牌的方式不起作用,原因如下:
1-未经批准的URL(不适用于本设备)获取令牌并发送短信
2-很快,调用的$xml->SesInfo方法将不起作用

但是,我建议您使用如下脚本所示的file_get_contents函数获取令牌:

// Note the small changes to your script
// Take the token: 

$infoToken =  file_get_contents('http://192.168.8.1/api/webserver/token');
$xml = new simpleXMLElement($infoToken)
$token = $xml->token;

$content ="";
$lengContent = strlen($content);
$dateTime = date("Y-m-d H:i:s");
$headers = array(
    "__RequestVerificationToken: $token",
    "X-Requested-With: XMLHttpRequest",
    "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
);

$data ='<?xml version="1.0" encoding="UTF-8"?><request><Index>-1</Index><Phones><Phone>777777</Phone></Phones><Sca></Sca><Content>'.$content.'</Content><Length>'.$lengContent.'</Length><Reserved>1</Reserved><Date>'.$dateTime.'</Date></request>' ;

//connect with cURL
//http://192.168.8.1/api/send-sms : Unapprove URL;
//http://192.168.8.1/api/sms/send-sms : Approve URL;
$curl = curl_init('http://192.168.8.1/api/sms/send-sms');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$content = curl_exec($curl);
var_dump($content);
curl_close($curl);

// Problem solved
//注意脚本中的小改动
//以代币为例:
$infoToken=file\u get\u contents('http://192.168.8.1/api/webserver/token');
$xml=新的simpleXMLElement($infoToken)
$token=$xml->token;
$content=“”;
$lengContent=strlen($content);
$dateTime=日期(“Y-m-d H:i:s”);
$headers=数组(
“\uuu RequestVerificationToken:$token”,
“X-request-With:XMLHttpRequest”,
“内容类型:application/x-www-form-urlencoded;charset=UTF-8”
);
$data='-1777777'.$content'.$lengContent'.1'.$dateTime'.';
//用卷曲连接
//http://192.168.8.1/api/send-sms :取消审核URL;
//http://192.168.8.1/api/sms/send-sms :批准URL;
$curl=curl\u init('http://192.168.8.1/api/sms/send-sms');
curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,300);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
$content=curl\u exec($curl);
var_dump($content);
curl_close($curl);
//问题解决

您应该在数据请求中添加日期,并很好地关闭它,此代码适用于我:

 <?php
$curl = curl_init();
$url = "http://192.168.8.1/api/webserver/SesTokInfo";
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($curl);  
$xml = new simpleXMLElement($content);

$sess_id = $xml->SesInfo;echo $sess_id;

// echo $sess_id;
$tokInfo= $xml->TokInfo;
curl_close($curl);
$curl2 = curl_init('http://192.168.8.1/api/sms/send-sms');

$headers = array(
"X-Requested-With: XMLHttpRequest",
'Cookie:'. $sess_id,
'__RequestVerificationToken:'. $tokInfo,
'"Content-Type:text/xml"',
);
$dateTime = date("Y-m-d H:i:s");
$data ="<request><Index>-1</Index><Phones><Phone>2135555555</Phone></Phones><Sca/><Content>salam</Content><Length>5</Length><Reserved>1</Reserved><Date>".$dateTime."</Date></request>" ; 
//print_r($headers);

curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl2, CURLOPT_POST, true);

curl_setopt($curl2, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);

echo $content = curl_exec($curl2);

curl_close($curl2);

?>


我不能回答这个问题,因为我是这个论坛的新手。那么你想发布一个答案吗?你能解释一下你到底改变了什么吗?如果没有解释,一个代码块就没有多大用处。您可以扩展您的解决方案,从这个调制解调器获取或读取短信吗
 <?php
$curl = curl_init();
$url = "http://192.168.8.1/api/webserver/SesTokInfo";
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($curl);  
$xml = new simpleXMLElement($content);

$sess_id = $xml->SesInfo;echo $sess_id;

// echo $sess_id;
$tokInfo= $xml->TokInfo;
curl_close($curl);
$curl2 = curl_init('http://192.168.8.1/api/sms/send-sms');

$headers = array(
"X-Requested-With: XMLHttpRequest",
'Cookie:'. $sess_id,
'__RequestVerificationToken:'. $tokInfo,
'"Content-Type:text/xml"',
);
$dateTime = date("Y-m-d H:i:s");
$data ="<request><Index>-1</Index><Phones><Phone>2135555555</Phone></Phones><Sca/><Content>salam</Content><Length>5</Length><Reserved>1</Reserved><Date>".$dateTime."</Date></request>" ; 
//print_r($headers);

curl_setopt($curl2, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl2, CURLOPT_POST, true);

curl_setopt($curl2, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);

echo $content = curl_exec($curl2);

curl_close($curl2);

?>