2009-01-19 105 views
4

我想让一台服务器向另一台服务器发出http post请求。我可以用一个基本的PHP安装(Dreamhost在我的情况下)吗?如果是这样,请指向正确的方向! 谢谢, -Morganphp服务器到服务器的帖子?

回答

6

我会use Curl,如果我是你。编号:it's supported on DH

+0

感谢奥利。我已经这样倾向了。我会做的。 – morgancodes 2009-01-19 15:16:16

+0

我也推荐使用Curl,特别是你需要传递很多参数等。同样值得一提的是,大多数PHP的文件函数都会很高兴地打开URL以及本地文件。 – 2009-01-19 15:44:31

0

http://blog.brezovsky.net/en-text-3.html

function httpSocketConnection($host, $method, $path, $data) 
    { 
     global $Db; 


     $method = strtoupper($method);   

     if ($method == "GET") 
     { 
      $path.= '?'.$data; 
     }  

     $filePointer = fsockopen($host, 80, $errorNumber, $errorString); 

     if (!$filePointer) 
     { 
      throw new Exception("Chyba spojeni $errorNumber $errorString"); 
     } 

     $requestHeader = $method." ".$path." HTTP/1.1\r\n"; 
     $requestHeader.= "Host: ".$host."\r\n"; 
     $requestHeader.= "User-Agent:  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; 
     $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n"; 

     if ($method == "POST") 
     { 
      $requestHeader.= "Content-Length: ".strlen($data)."\r\n"; 
     } 

     $requestHeader.= "Connection: close\r\n\r\n"; 

     if ($method == "POST") 
     { 
      $requestHeader.= $data; 
     }    

     fwrite($filePointer, $requestHeader); 

     $responseHeader = ''; 
     $responseContent = ''; 

     do 
     { 
      $responseHeader.= fread($filePointer, 1); 
     } 
     while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader)); 


     if (!strstr($responseHeader, "Transfer-Encoding: chunked")) 
     { 
      while (!feof($filePointer)) 
      { 
       $responseContent.= fgets($filePointer, 128); 
      } 
     } 
     else 
     { 

      while ($chunk_length = hexdec(fgets($filePointer))) 
      { 
       $responseContentChunk = ''; 


       $read_length = 0; 

       while ($read_length < $chunk_length) 
       { 
        $responseContentChunk .= fread($filePointer, $chunk_length - $read_length); 
        $read_length = strlen($responseContentChunk); 
       } 

       $responseContent.= $responseContentChunk; 

       fgets($filePointer); 

      } 

     } 




     return chop($responseContent); 

    }