2017-07-27 116 views
0

我正在嘗試使用PHP套接字連接到API。PHP Socket連接到API

我已經在很多方面嘗試過,但我無法得到它的工作。我知道還有其他的答案,但是沒有人能工作。我真的無法實現它。我至少在兩天內嘗試。

以下是錯誤:

php_network_getaddresses: getaddrinfo failed: Name or service not known

代碼(套接字 - 它不工作):

var $url = 'api.site.com.br/'; 

public function getUsers(){ 

    $path = "users/?accesstoken=c24f506fe265488435858925096bc4ad7ba0"; 
    $packet= "GET {$path} HTTP/1.1\r\n"; 
    $packet .= "Host: {$url}\r\n"; 
    $packet .= "Connection: close\r\n"; 

    if (!($socket = fsockopen($this->url,80,$err_no,$err_str))){ 
     die("\n Connection Failed. $err_no - $err_str \n"); 
    } 

    fwrite($socket, $packet); 
    return stream_get_contents($socket); 
} 

代碼(捲曲 - 它的作品!):

public function getUsers2(){ 
    $path = "users/?accesstoken=c24f506fe265488435858925096bc4ad7ba0"; 
    $method = 'GET'; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $this->url . $path); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); 
    $output = curl_exec($ch); 
    $curl_error = curl_error($ch); 
    curl_close($ch); 

    return $output; 
} 

我不能給你正確的URL,但URL與Curl一起工作,所以它應該與套接字一起工作。

回答

0

我解決它通過執行以下操作:

public function getUsers(){ 
    $path = "users/?accesstoken=c24f506fe265488435858925096bc4ad7ba0"; 
    $fp = fsockopen($this->url, 80, $errno, $errstr, 30); 
    if (!$fp) { 
     echo "$errstr ($errno)<br />\n"; 
    } else { 
     $out = "GET /{$path} HTTP/1.1\r\n"; 
     $out .= "Host: {$this->url}\r\n"; 
     $out .= "Connection: Close\r\n\r\n"; 
     fwrite($fp, $out); 
     while (!feof($fp)) { 
      echo fgets($fp, 128); 
     } 
     fclose($fp); 
    } 
} 
0

通過插座連接到主機沒有連接到一個URL。

錯誤:api.site.com.br/

錯誤:http://api.site.com.br/

錯誤:https//api.site.com.br/api/

右:api.site.com.br

您連接到主機。這可以是域名或IP。這兩者都沒有斜線。

+0

這不是問題所在。 – Alan