PHP中实现POST请求的三种方法有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计378个文字,预计阅读时间需要2分钟。
PHP 发送 POST 请求的三种方式:分别使用 curl、file_get_contents 和 fsocket 来实现 POST 提交数据。示例代码如下:
phpclass Request { public static function post($url, $post_data='', $timeout=5) { // 使用 curl $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response=curl_exec($ch); curl_close($ch); return $response;
// 使用 file_get_contents $post_data=http_build_query($post_data); $options=array( 'http'=> array( 'method'=> 'POST', 'header'=> Content-type: application/x-www-form-urlencoded\r\n, 'content'=> $post_data, 'timeout'=> $timeout ) ); $context=stream_context_create($options); $result=file_get_contents($url, false, $context); return $result;
// 使用 fsocket $fp=fsockopen('ssl://'.parse_url($url, PHP_URL_HOST), 443, $errno, $errstr, $timeout); if (!$fp) { return false; } $out=POST . parse_url($url, PHP_URL_PATH) . HTTP/1.1\r\n; $out .=Host: . parse_url($url, PHP_URL_HOST) . \r\n; $out .=Content-type: application/x-www-form-urlencoded\r\n; $out .=Content-length: . strlen($post_data) . \r\n; $out .=Connection: close\r\n\r\n; $out .=$post_data . \r\n; fwrite($fp, $out); $response=''; while (!feof($fp)) { $response .=fgets($fp, 128); } fclose($fp); return $response; }}
PHP发送POST请求的三种方式 分别使用curl file_get_content fsocket 来实现post提交数据class Request{ public static function post($url, $post_data = '', $timeout = 5){//curl $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_POST, 1); if($post_data != ''){ curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); } curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HEADER, false); $file_contents = curl_exec($ch); curl_close($ch); return $file_contents; } public static function post2($url, $data){//file_get_content $postdata = http_build_query( $data ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents($url, false, $context); return $result; } public static function post3($host,$path,$query,$others=''){//fsocket $post="POST $path HTTP/1.1\\r\\nHost: $host\\r\\n"; $post.="Content-type: application/x-www-form-"; $post.="urlencoded\\r\\n${others}"; $post.="User-Agent: Mozilla 4.0\\r\\nContent-length: "; $post.=strlen($query)."\\r\\nConnection: close\\r\\n\\r\\n$query"; $h=fsockopen($host,80); fwrite($h,$post); for($a=0,$r='';!$a;){ $b=fread($h,8192); $r.=$b; $a=(($b=='')?1:0); } fclose($h); return $r; } }
本文共计378个文字,预计阅读时间需要2分钟。
PHP 发送 POST 请求的三种方式:分别使用 curl、file_get_contents 和 fsocket 来实现 POST 提交数据。示例代码如下:
phpclass Request { public static function post($url, $post_data='', $timeout=5) { // 使用 curl $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response=curl_exec($ch); curl_close($ch); return $response;
// 使用 file_get_contents $post_data=http_build_query($post_data); $options=array( 'http'=> array( 'method'=> 'POST', 'header'=> Content-type: application/x-www-form-urlencoded\r\n, 'content'=> $post_data, 'timeout'=> $timeout ) ); $context=stream_context_create($options); $result=file_get_contents($url, false, $context); return $result;
// 使用 fsocket $fp=fsockopen('ssl://'.parse_url($url, PHP_URL_HOST), 443, $errno, $errstr, $timeout); if (!$fp) { return false; } $out=POST . parse_url($url, PHP_URL_PATH) . HTTP/1.1\r\n; $out .=Host: . parse_url($url, PHP_URL_HOST) . \r\n; $out .=Content-type: application/x-www-form-urlencoded\r\n; $out .=Content-length: . strlen($post_data) . \r\n; $out .=Connection: close\r\n\r\n; $out .=$post_data . \r\n; fwrite($fp, $out); $response=''; while (!feof($fp)) { $response .=fgets($fp, 128); } fclose($fp); return $response; }}
PHP发送POST请求的三种方式 分别使用curl file_get_content fsocket 来实现post提交数据class Request{ public static function post($url, $post_data = '', $timeout = 5){//curl $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_POST, 1); if($post_data != ''){ curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); } curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HEADER, false); $file_contents = curl_exec($ch); curl_close($ch); return $file_contents; } public static function post2($url, $data){//file_get_content $postdata = http_build_query( $data ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents($url, false, $context); return $result; } public static function post3($host,$path,$query,$others=''){//fsocket $post="POST $path HTTP/1.1\\r\\nHost: $host\\r\\n"; $post.="Content-type: application/x-www-form-"; $post.="urlencoded\\r\\n${others}"; $post.="User-Agent: Mozilla 4.0\\r\\nContent-length: "; $post.=strlen($query)."\\r\\nConnection: close\\r\\n\\r\\n$query"; $h=fsockopen($host,80); fwrite($h,$post); for($a=0,$r='';!$a;){ $b=fread($h,8192); $r.=$b; $a=(($b=='')?1:0); } fclose($h); return $r; } }

