php - GCM Curl 连接错误

标签 php android curl google-cloud-messaging

我正在尝试使用 GCM 和 curl 从服务器向客户端 (android) 发送消息, 我使用的代码非常适用于本地主机(模拟器和设备),但是它不适用于常规服务器,附件是使用的代码和错误消息,

是否需要执行任何其他步骤或更改才能使代码适用于在线服务器。任何帮助表示赞赏:)

<?php

function Reg($USER_REG_ID)
{
    require_once __DIR__ . '/db_connect.php';
    $db = new DB_CONNECT();
    $response = array();
    $API_Key = 'AIzaSyCQgPGhpAzuWGuUd0DCI8pYaXXAItthEsg';
    $url     = 'https://android.googleapis.com/gcm/send';


    $result = mysql_query("SELECT * FROM users where type = 'bus'") or die(mysql_error());

    while ($row = mysql_fetch_array($result)) {

        $Registration_ID = $row["user_RegID"];
        array_push($response, $Registration_ID);

    }

//THIS PART SENDS TEH REQUEST USING GCM
    $fields = array(
        'registration_ids' => $response,
        'data' => array(
            "message" => $USER_REG_ID
        )
    );

        print_r ($fields);

    $headers = array(
        'Authorization: key=' . $API_Key,
        'Content-Type: application/json'
    );
    // Open connection
    $ch      = curl_init();

    // Set the url, number of POST vars, POST data
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Disabling SSL Certificate support temporarly
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

    // Execute post
    $result = curl_exec($ch);
    if ($result === FALSE) {
        die('Curl failed: ' . curl_error($ch));
    }

    // Close connection
    curl_close($ch);


}
Reg(1)
?>

字段数组

Array ( [registration_ids] => Array ( [0] => APA91bFolV5ZK2diIbTyxwPLp6BqTMdhqaMDYgEsGOlznmxn4NRV6QQzPtfr58ORrpmxq0N_UMwz6s30gWgj--w5SqHxCEHh662PnvjDpGce_4EiHDe-muflVYMOsLlbVDRybvNDubX9aF_RE4VPJdArUsqQjcrQRg ) [data] => Array ( [message] => 1 ) )

错误信息

Curl failed: Failed to connect to 2a00:1450:400c:c05::5f: Network is unreachable

最佳答案

应该这样做:

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

如果上述方法不起作用,您可以尝试在系统范围内禁用 ipv6:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

关于php - GCM Curl 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21212395/

相关文章:

Android webview 下载数据/文本文件

java - AlertDialog 不工作,在 if 条件语句期间

php - Curl PHP 无法显示 amazon

php - Docker Image Build(摆脱依赖)

php - 如何使用 php Soap 库向 SoapHeader 节点添加属性

php - 将表单 POST 提交到另一个页面,但在重定向之前进行验证,如果验证失败,则保留在同一页面上

json - 如何在 Mattermost 中将机器人的直接消息发送给用户

php 检查该类是否实现接口(interface),而不是其父类

Android Material EditText

linux - mipsel-linux-uclibc/bin/ld : cannot find -lcurl