2014-01-22 40 views
0

由於某種原因,這個代碼不工作:獲得通過以https file_get_content響應爲sendgrid.com(PHP)

$url = "https://sendgrid.com/api/newsletter/lists/email/add.json?api_user=myUserName&api_key=myPassword&list=MyList&data[]={\"email\":\"[email protected]\",\"name\":\"Matthijs de Zwart\"}"; 
$result = file_get_content($url); 
$response = json_decode($result); 
var_dump($response); 

而如果我打開瀏覽器,去這個網址

https://sendgrid.com/api/newsletter/lists/email/add.json?api_user=myUserName&api_key=myPassword&list=MyList&data[]= {」電子郵件「:」[email protected]「,」name「:」Matthijs de Zwart「}

我確實收到回覆。

我用這些檢查

echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n"; 
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n"; 
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n"; 
echo 'wrappers: ', var_dump($w); 

這就造成了以下的輸出:

openssl: yes 
http wrapper: yes 
https wrapper: yes 
wrappers: array(22) { 
    [0]=> 
    string(13) "compress.zlib" 
    [1]=> 
    string(14) "compress.bzip2" 
    [2]=> 
    string(4) "dict" 
    [3]=> 
    string(3) "ftp" 
    [4]=> 
    string(4) "ftps" 
    [5]=> 
    string(6) "gopher" 
    [6]=> 
    string(4) "http" 
    [7]=> 
    string(5) "https" 
    [8]=> 
    string(4) "imap" 
    [9]=> 
    string(5) "imaps" 
    [10]=> 
    string(4) "pop3" 
    [11]=> 
    string(5) "pop3s" 
    [12]=> 
    string(4) "rtsp" 
    [13]=> 
    string(4) "smtp" 
    [14]=> 
    string(5) "smtps" 
    [15]=> 
    string(6) "telnet" 
    [16]=> 
    string(4) "tftp" 
    [17]=> 
    string(3) "php" 
    [18]=> 
    string(4) "file" 
    [19]=> 
    string(4) "glob" 
    [20]=> 
    string(4) "data" 
    [21]=> 
    string(3) "zip" 
} 

我一直在谷歌上搜索周圍得到它的工作,但到目前爲止,我只能找到解決方案這說明要打開openssl ...而且是。

回答

0

試試這個:

<?php 

// helper function 
function curlGet($url) 
{ 
    // create curl resource 
    $ch = curl_init(); 

    // set url 
    curl_setopt($ch, CURLOPT_URL, $url); 

    // return the transfer as a string 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    // ssl opts 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

    // $output contains the output string 
    $output = curl_exec($ch); 

    // close curl resource to free up system resources 
    curl_close($ch); 

    // finished 
    return $output;  
} 

// usage 
var_dump(curlGet("https://sendgrid.com/api/newsletter/lists/email/add.json?api_user=myUserName&api_key=myPassword&list=MyList&data[]={\"email\":\"[email protected]\",\"name\":\"Matthijs de Zwart\"}")); 

?> 
+0

嗨,謝謝你的手。在php.ini文件中取消註釋extension = php_curl.dll並重新啓動apache後,這是輸出:==> string(0)「」<==雖然我期望:{「inserted」:1} – user369122

0

我解決了這個問題,有一個解決辦法,使用此代碼:

$dataString = urlencode('{"email":"[email protected]","name":"Matthijs de Zwart"}'); 

$homepage = file_get_contents("https://sendgrid.com/api/newsletter/lists/email/add.json?api_user=myUserName&api_key=myPassword&list=MyList&data[]=".$dataString); 

回報我的預期。

0

嘗試使用他們的apiv3。它用於很好。 但我真的會尋找一個新的提供者。我們離開他們後,他們鎖定我們的帳戶和他們的48小時支持說:「創建一個新的帳戶」