php server-to-server post?

前端 未结 2 2047
长情又很酷
长情又很酷 2021-01-19 04:49

I\'d like to have one server make an http post request to another server. Can I do this with a basic php install (Dreamhost in my case)? If so, please point me in the right

相关标签:
2条回答
  • 2021-01-19 05:19

    I'd use Curl, if I were you.

    Edit: And it looks like it's supported on DH.

    0 讨论(0)
  • 2021-01-19 05:19

    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);
    
        }
    
    0 讨论(0)
提交回复
热议问题