我正在编写一个sms应用程序,它从MYSQL数据库中检索消息,并使用cURL将消息传递给sms网关的smpp api。我发现了一个带有cURL的小故障......从某种意义上说,消息是被截断。我得到了应用程序,通过使用urlencode为我正在传输的变量添加更多数据...但是有些数据仍然被截断。我被告知这可能是因为“GET”请求的长度...所以我相信访问短信网关api的唯一方法是通过“GET”请求......基于我给出的内容......这是:
http://xxx.yyy.zzz.qqq:8080/bulksms/bulksms?username=
bbb&password=demo&type=0&dlr=Z&destination=806754367
&source=TESTING&message=hi testing
此申请的目的是将学生的学术报告发送给他们的监护人......因此请求必须冗长。从表中取得的平均记录如下:
The Results For Your Son Pedro Have Been Released As Follows:
Mathematics:97% English Language:58% Crk:59% Social Studies:67%
Commerce:67% Government98% Biology: 100% Chemistry:78% Geography:99%
Religious Knowledge:Did Not Register
Economics:54%
当我使用curl转移测试运行的记录时,这就是我得到的:
The Results For Your Son Pedro Have Been Released As Follows:
Mathematics:97% English Language:58% Crk:59% Social Studi
所以我关心的是获取“COMPLETE”记录,然后将其发送到sms网关api。我用urlencode函数修改了代码:
<?php
include 'sms_connect.php';
$sql="select name from sms";
$result=mysqli_query($link,$sql) or die("Error in sms".mysqli_error($link));
while($row=mysqli_fetch_assoc($result))
{$name=$row['name'];
$url = "http://localhost/sms/index.php?name=".urlencode($name);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
// grab URL and pass it to the browser
$results = curl_exec($ch);
var_dump($results);
}
curl_close($ch);
?>
好的... sms网关的技术支持人员说,使用smpp协议。可以发送大量数据。我打算在适当的时候试验和缩写数据。 我的index.php代码如下所示:
$name=$_GET['name'];
include 'sms_connect.php';
$sql="insert into sms_test values('$name')";
$result=mysqli_query($link,$sql)
or die("Error in inserting name".mysqli_error($link));
答案 0 :(得分:1)
更改
$url = "http://localhost/sms/index.php?name=".$name;
要
$url = "http://localhost/sms/index.php?name=".urlencode($name);
您也可以尝试使用rawurlencode()
UPDATE 从现在你得到的数据,但不是完整的,似乎问题不再是卷曲,而是在脚本上你发送请求(localhost / sms / index.php)。 请记住,SMS的大小有限,这可能是数据被截断的原因。无论如何,如果不看index.php,我们就不知道为什么你没有收到数据。