首页 > 代码库 > PHP HTTP请求

PHP HTTP请求

stream_context_create

1、curl仍然是最好的HTTP库,没有之一。 可以解决任何复杂的应用场景中的HTTP 请求
2. 文件流式的HTTP请求比较适合处理简单的HTTP POST/GET请求,但不适用于复杂的HTTP请求
3. PECL_HTTP扩展写代码更加简洁,省事, 但成熟度不好,编程接口不统一,文档和实例匮乏。 

 

PHP模拟发送HTTP请求:

1、file_get_contents 发送get请求

技术分享
<?php
/**
 * 发送post请求
 * @param string $url 请求地址
 * @param array $post_data post键值对数据
 * @return string
 */
function send_post($url, $post_data) {
    $postdata = http://www.mamicode.com/http_build_query($post_data);>
$post_data = http://www.mamicode.com/array(>
 
技术分享

 

2、通过CURL发送get请求

技术分享
<?php
$ch=curl_init(‘http://www.xxx.com/xx.html‘);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
$output=curl_exec($ch);
$fh=fopen("out.html",‘w‘);
fwrite($fh,$output);
fclose($fh);
技术分享

3、通过fsocket发送get请求

技术分享
/**
 * Socket版本
 * 使用方法:
 * $post_string = "app=socket&amp;version=beta";
 * request_by_socket(‘blog.snsgou.com‘, ‘/restServer.php‘, $post_string);
 */
function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30) {
	$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
	if (!$socket) die("$errstr($errno)");
	fwrite($socket, "POST $remote_path HTTP/1.0");
	fwrite($socket, "User-Agent: Socket Example");
	fwrite($socket, "HOST: $remote_server");
	fwrite($socket, "Content-type: application/x-www-form-urlencoded");
	fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . "");
	fwrite($socket, "Accept:*/*");
	fwrite($socket, "");
	fwrite($socket, "mypost=$post_string");
	fwrite($socket, "");
	$header = "";
	while ($str = trim(fgets($socket, 4096))) {
		$header .= $str;
	}

	$datahttp://www.mamicode.com/= "";
	while (!feof($socket)) {
		$data .= fgets($socket, 4096);
	}

	return $data;
}
技术分享

 

PHP HTTP请求