繁体   English   中英

PHP套接字连接到API

[英]PHP Socket Connection to an API

我正在尝试使用PHP套接字连接到API。

我已经尝试了很多方法,但是无法正常工作。 我知道还有其他答案,但没人能解决。 我真的做不到。 我正在尝试至少两天。

这是错误:

php_network_getaddresses:getaddrinfo失败:名称或服务未知

代码(套接字-不起作用):

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一起使用,因此它应与套接字一起使用。

通过套接字连接到主机不连接到URL。

错误: api.site.com.br/

错误: http://api.site.com.br/http://api.site.com.br/

错误: https//api.site.com.br/api/

右: api.site.com.br

您连接到主机。 这可以是域名或IP。 这些都没有一个斜线。

我通过执行以下操作解决了该问题:

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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM