PHP之httpRequest
2018-12-02 06:16:08来源:博客园 阅读 ()
<?php
/**
* Respose A Http Request
*
* @param string $url
* @param array $post
* @param string $method
* @param bool $returnHeader
* @param string $cookie
* @param bool $bysocket
* @param string $ip
* @param integer $timeout
* @param bool $block
* @return string Response
*/
function
httpRequest(
$url
,
$post
=
''
,
$method
=
'GET'
,
$limit
=0,
$returnHeader
=FALSE,
$cookie
=
''
,
$bysocket
=FALSE,
$ip
=
''
,
$timeout
=15,
$block
=TRUE) {
$return
=
''
;
$matches
=
parse_url
(
$url
);
!isset(
$matches
[
'host'
]) &&
$matches
[
'host'
] =
''
;
!isset(
$matches
[
'path'
]) &&
$matches
[
'path'
] =
''
;
!isset(
$matches
[
'query'
]) &&
$matches
[
'query'
] =
''
;
!isset(
$matches
[
'port'
]) &&
$matches
[
'port'
] =
''
;
$host
=
$matches
[
'host'
];
$path
=
$matches
[
'path'
] ?
$matches
[
'path'
].(
$matches
[
'query'
] ?
'?'
.
$matches
[
'query'
] :
''
) :
'/'
;
$port
= !
empty
(
$matches
[
'port'
]) ?
$matches
[
'port'
] : 80;
if
(
strtolower
(
$method
) ==
'post'
) {
$post
= (
is_array
(
$post
)
and
!
empty
(
$post
)) ? http_build_query(
$post
) :
$post
;
$out
=
"POST $path HTTP/1.0\r\n"
;
$out
.=
"Accept: */*\r\n"
;
//$out .= "Referer: $boardurl\r\n";
$out
.=
"Accept-Language: zh-cn\r\n"
;
$out
.=
"Content-Type: application/x-www-form-urlencoded\r\n"
;
$out
.=
"User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"
;
$out
.=
"Host: $host\r\n"
;
$out
.=
'Content-Length: '
.
strlen
(
$post
).
"\r\n"
;
$out
.=
"Connection: Close\r\n"
;
$out
.=
"Cache-Control: no-cache\r\n"
;
$out
.=
"Cookie: $cookie\r\n\r\n"
;
$out
.=
$post
;
}
else
{
$out
=
"GET $path HTTP/1.0\r\n"
;
$out
.=
"Accept: */*\r\n"
;
//$out .= "Referer: $boardurl\r\n";
$out
.=
"Accept-Language: zh-cn\r\n"
;
$out
.=
"User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"
;
$out
.=
"Host: $host\r\n"
;
$out
.=
"Connection: Close\r\n"
;
$out
.=
"Cookie: $cookie\r\n\r\n"
;
}
$fp
=
fsockopen
((
$ip
?
$ip
:
$host
),
$port
,
$errno
,
$errstr
,
$timeout
);
if
(!
$fp
)
return
''
;
else
{
$header
=
$content
=
''
;
stream_set_blocking(
$fp
,
$block
);
stream_set_timeout(
$fp
,
$timeout
);
fwrite(
$fp
,
$out
);
$status
= stream_get_meta_data(
$fp
);
if
(!
$status
[
'timed_out'
]) {
//未超时
while
(!
feof
(
$fp
)) {
$header
.=
$h
=
fgets
(
$fp
);
if
(
$h
&& (
$h
==
"\r\n"
||
$h
==
"\n"
))
break
;
}
$stop
= false;
while
(!
feof
(
$fp
) && !
$stop
) {
$data
=
fread
(
$fp
, (
$limit
== 0 ||
$limit
> 8192 ? 8192 :
$limit
));
$content
.=
$data
;
if
(
$limit
) {
$limit
-=
strlen
(
$data
);
$stop
=
$limit
<= 0;
}
}
}
fclose(
$fp
);
return
$returnHeader
?
array
(
$header
,
$content
) :
$content
;
}
}
?>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:PHP匿名函数和闭包
下一篇:PHP 类名::class含义
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash