2014-10-02 42 views
0

我想從使用套接字編程的URL獲得響應,但沒有任何工作正常。我正在使用PHP,並且我正在與開發人員告知我需要打開一個套接字,發送一個請求,然後我應該得到一個JSON響應。 $message是需要發送以便接收響應的字符串。套接字編程:socket_read,fgets無法獲得響應

這是我到目前爲止已經試過......

$message = "api\tjson\tget\trooms\n"; 
$response = fsockopen("142.4.xxx.xxx", 5678); 
fputs($response, $message); 
fgets($response, 2048); 
$data = json_decode($response, true); 

然後我去解析JSON響應。

我也試過,

$message = "api\tjson\tget\trooms\n"; 
$response = fsockopen("142.4.xxx.xxx", 5678); 
fputs($response, $message); 
socket_read($response, 2048, PHP_NORMAL_READ); 
$data = json_decode($response, true); 

但後來我得到一個錯誤,指出socket_read不正確的資源。任何幫助,將不勝感激。

+0

[使用流套接字。](http://www.christophh.net/2012/07/24/php-socket-programming/)你會發現它更容易。 – OneHoopyFrood 2014-10-02 00:58:34

回答

0

您至少需要進行一些錯誤檢查。也許這會有所幫助:

$message = "api\tjson\tget\trooms\n"; 
$response = fsockopen("142.4.xxx.xxx", 5678, $errno, $errstr, 30); 
if (!$response) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "POST /script.php HTTP/1.1\r\n"; 
    $out .= "Host: www.webste.com\r\n"; 
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
    $out .= 'Content-Length: ' . strlen($message) . "\r\n\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($response, $out); 
    fwrite($response, $message); 
    while (!feof($response)) { 
     echo fgets($response, 128); 
    } 
    fclose($response); 
}