PHP 发送HTTP请求

file_get_contents版本:

/**
 * 发送post请求
 * @param string $url 请求地址
 * @param array $post_data post键值对数据
 * @return string
 */
function send_post($url, $post_data) {

	$postdata = http_build_query($post_data);
	$options = array(
		'http' =>; array(
			'method' =>; 'POST',
			'header' =>; 'Content-type:application/x-www-form-urlencoded',
			'content' =>; $postdata,
			'timeout' =>; 15 * 60 // 超时时间(单位:s)
		)
	);
	$context = stream_context_create($options);
	$result = file_get_contents($url, false, $context);

	return $result;
}
使用如下:

post_data = array(
	'username' => 'stclair2201',
	'password' => 'handan'
);
send_post('http://blog.snsgou.com', $post_data);
Socket版本:

/**
 * Socket版本
 * 使用方法:
 * $post_string = "app=socket&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;
	}

	$data = "";
	while (!feof($socket)) {
		$data .= fgets($socket, 4096);
	}

	return $data;
}
Curl版本:

/**
 * Curl版本
 * 使用方法:
 * $post_string = "app=request&version=beta";
 * request_by_curl('http://blog.snsgou.com/restServer.php', $post_string);
 */
function request_by_curl($remote_server, $post_string) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $remote_server);
	curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERAGENT, "snsgou.com's CURL Example beta");
	$data = curl_exec($ch);
	curl_close($ch);

	return $data;
}
Curl版本(2):

/**
 * 发送HTTP请求
 *
 * @param string $url 请求地址
 * @param string $method 请求方式 GET/POST
 * @param string $refererUrl 请求来源地址
 * @param array  $data 发送数据
 * @param string $header 发送头消息 
 * @param string $timeout 请求时间
 * @param string $proxy  代理
 * @return boolean
 */
function send_request($url, $data, $refererUrl = '', $method = 'GET', $header, $timeout = 30, $proxy = false) {
	$ch = null;
	if('POST' === strtoupper($method)) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_HEADER,0 );
		curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
		if ($refererUrl) {
			curl_setopt($ch, CURLOPT_REFERER, $refererUrl);
		}
		if($contentType) {
			curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
		}
		if(is_string($data)){
			curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		} else {
			curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
		}
	} else if('GET' === strtoupper($method)) {
		if(is_string($data)) {
			$real_url = $url. (strpos($url, '?') === false ? '?' : ''). $data;
		} else {
			$real_url = $url. (strpos($url, '?') === false ? '?' : ''). http_build_query($data);
		}

		$ch = curl_init($real_url);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
		if ($refererUrl) {
			curl_setopt($ch, CURLOPT_REFERER, $refererUrl);
		}
	} else {
		$args = func_get_args();
		return false;
	}

	if($proxy) {
		curl_setopt($ch, CURLOPT_PROXY, $proxy); 
	}
	$ret = curl_exec($ch);
	$info = curl_getinfo($ch);
	$contents = array(
		'httpInfo' => array(
			'send' => $data,
			'url' => $url,
			'ret' => $ret,
			'http' => $info,
		)
	);

	curl_close($ch);
	return $ret;
}
设置请求头信息:

function FormatHeader($url, $myIp = null,$type = 'json') 
{ 
	// 解悉url 
	$temp = parse_url($url); 
	$query = isset($temp['query']) ? $temp['query'] : ''; 
	$path = isset($temp['path']) ? $temp['path'] : '/'; 

	$header = array ( 
		"POST {$path}?{$query} HTTP/1.1", 
		"Host: {$temp['host']}", 
		"Content-Type: text/{$type}; charset=utf-8", 
		'Accept: */*', 
		"Referer: http://{$temp['host']}/", 
		'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)', 
		"X-Forwarded-For: {$myIp}", 
		"Content-length: 380", 
		"Connection: Close" 
	); 

	return $header; 
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值