cURL仍然截断数据...即使使用url编码

时间:2011-10-11 11:13:13

标签: php

我正在编写一个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));

1 个答案:

答案 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,我们就不知道为什么你没有收到数据。