douhoushou8385 2015-12-09 20:09
浏览 24

cURL没有用PHP显示整个GET参数

This is the code I use for sending notifications to my app.

    include("connection.php");
    include("utils.php");

    $Info = mysql_fetch_array(mysql_query("SELECT * FROM data WHERE iddata = ".$_GET["dataId"]));
    $ownerInfo = mysql_fetch_array(mysql_query("SELECT * FROM dataUsers WHERE id = ".$dataInfo['id']));
    $data = mysql_fetch_array(mysql_query("SELECT dataUsers.id, dataUsers.token, data.idData, data.id FROM data INNER JOIN data ON data.iddata = '".$_GET["data"]."' AND data.id = dataUsers.id"))["token"];

    $datagOwnerDeviceToken = getDeviceTokenFromUserToken($dataOwnerToken);
    //call server where simplePush.php is located -ports opened-
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => "http://www.myserver.com/sendNotif.php?msg=hello guys&deviceToken=xxxxxxxxxxxx",
        CURLOPT_USERAGENT => 'whatever'
        ));

        $resp = curl_exec($curl);
        curl_close($curl);

The problem is that I receive the notification but instead of "Hello guys", I receive "Hello", that's to say, the string rips off when it founds a blank space. I think it could be due to the encoding but I don't really know how to make it work.

If I change the msg parameter to msg=helloguys I receive to whole string. So there's a problem with blank spaces.

Many thanks.

This is now the actual code:

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1,

$url = "http://server.com/notifications.php?".http_build_query(array(
    'msg' => "hello this is ".$dataInfo["wastringText"],
    'deviceToken' => $dataOwnerDeviceToken
));

echo "This is my url: ".$url; curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $url, CURLOPT_USERAGENT => 'whatever' ));
$resp = curl_exec($curl); curl_close($curl);

  • 写回答

1条回答 默认 最新

  • douyun3022 2015-12-09 20:17
    关注

    You need to encode the space as %20 or +. But it would be best to use http_build_query to encode the whole query string.

    $url = "http://www.myserver.com/sendNotif.php?" . 
        http_build_query(array(
            'msg' => 'hello guys',
            'deviceToken' => 'xxxxxxxxxxxx'
        ));
    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $url,
        CURLOPT_USERAGENT => 'whatever'
        ));
    
    评论

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)