我正在尝试使用PHP套接字连接到API。
我在很多方面都尝试过,但我无法让它发挥作用。我知道还有其他答案,但没有人有效。我真的无法实现它。我正在尝试至少两天。
这是错误:
php_network_getaddresses:getaddrinfo failed:名称或服务未知
代码(套接字 - 它不起作用):
public Form1()
{
InitializeComponent();
this.Shown += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, EventArgs e)
{
using (var ws = new WebSocket("ws://169.254.101.183"))
{
ws.OnMessage += (sender2, e2) =>
textBox1.Text = e2.Data.ToString();
ws.Connect();
ws.OnOpen += (sender2,e2) =>
textBox1.Text = "connected";
/*ws.OnError += (sender2, e2) =>
textBox1.Text = e2.Message;*/
//textBox1.Text = ".";
}
}
Code(Curl - It Works!):
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);
}
我无法向您提供正确的URL,但URL正在使用Curl,因此它应该适用于套接字。
答案 0 :(得分:1)
通过套接字连接到主机未连接到URL。
错误:api.site.com.br/
错误:http://api.site.com.br/
错误:https//api.site.com.br/api/
右: api.site.com.br
您连接到主机。这可以是域名或IP。这些都没有斜线。
答案 1 :(得分: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);
}
}