Gyb2b V1.01免费版可终身使用,是一款功能强大的B2B电子商务应用软件。该软件不仅更新和修改了V1.0相关功能,更是采用了目前互联网上最流行的LAMP组合(Linux+Apache+Mysql+PHP)开发完成,模板技术实现了界面与代码的有效分离,用户可以快速地在此基础上编译模板;提供B2B电子商务应用最常见的求购、供应、商品、公司库、行业资讯、商圈、资信认证、在线交易、交易评分、留言、搜
0
file_get_contents版本:
01 |
<?php |
02 |
/** |
03 |
* 发送post请求
|
04 |
* @param string $url 请求地址
|
立即学习“PHP免费学习笔记(深入)”;
05 |
* @param array $post_data post键值对数据
|
06 |
* @return string
|
07 |
*/
|
08 |
functionsend_post($url,
$post_data) {
|
09 |
10 |
$postdata= http_build_query($post_data);
|
11 |
$options= array(
|
12 |
'http'=> array(
|
13 |
'method'=> 'POST',
|
14 |
'header'=> 'Content-type:application/x-www-form-urlencoded',
|
15 |
'content'=> $postdata,
|
16 |
'timeout'=> 15 * 60 // 超时时间(单位:s)
|
17 |
)
|
18 |
);
|
19 |
$context= stream_context_create($options);
|
20 |
$result= file_get_contents($url, false,
$context);
|
21 |
22 |
return$result;
|
23 |
} |
使用如下:
1 |
$post_data= array(
|
2 |
'username'=> 'stclair2201',
|
3 |
'password'=> 'handan'
|
4 |
); |
5 |
send_post('http://blog.snsgou.com',
$post_data);
|
实战经验:
当我利用上述代码给另一台服务器发送http请求时,发现,如果服务器处理请求时间过长,本地的PHP会中断请求,即所谓的超时中断,第一个怀疑的是PHP本身执行时间的超过限制,但想想也不应该,因为老早就按照这篇文章设置了“PHP执行时间限制”(【推荐】PHP上传文件大小限制大全 ),仔细琢磨,想想,应该是http请求本身的一个时间限制,于是乎,就想到了怎么给http请求时间限制搞大一点。。。。。。查看PHP手册,果真有个参数 “ timeout ”,默认不知道多大,当把它的值设大一点,问题得已解决,弱弱地做个笔记~~~
Socket版本:
01 |
/** |
02 |
* Socket版本
|
03 |
* 使用方法:
|
04 |
* $post_string = "app=socket&version=beta";
|
05 |
* request_by_socket('blog.snsgou.com', '/restServer.php', $post_string);
|
06 |
*/
|
07 |
functionrequest_by_socket($remote_server,$remote_path,$post_string,$port= 80,$timeout= 30) {
|
08 |
$socket= fsockopen($remote_server,
$port, $errno,
$errstr, $timeout);
|
09 |
if(!$socket)
die("$errstr($errno)");
|
10 |
fwrite($socket,
"POST $remote_path HTTP/1.0");
|
11 |
fwrite($socket,
"User-Agent: Socket Example");
|
12 |
fwrite($socket,
"HOST: $remote_server");
|
13 |
fwrite($socket,
"Content-type: application/x-www-form-urlencoded");
|
14 |
fwrite($socket,
"Content-length: ". (strlen($post_string) + 8) .
"");
|
15 |
fwrite($socket,
"Accept:*/*");
|
16 |
fwrite($socket,
"");
|
17 |
fwrite($socket,
"mypost=$post_string");
|
18 |
fwrite($socket,
"");
|
19 |
$header= "";
|
20 |
while($str= trim(fgets($socket, 4096))) {
|
21 |
$header.= $str;
|
22 |
}
|
23 |
24 |
$data= "";
|
25 |
while(!feof($socket)) {
|
26 |
$data.= fgets($socket, 4096);
|
27 |
}
|
28 |
29 |
return$data;
|
30 |
} |
Curl版本:
01 |
/** |
02 |
* Curl版本
|
03 |
* 使用方法:
|
04 |
* $post_string = "app=request&version=beta";
|
05 |
* request_by_curl('http://blog.snsgou.com/restServer.php', $post_string);
|
06 |
*/
|
07 |
functionrequest_by_curl($remote_server,
$post_string) {
|
08 |
$ch= curl_init();
|
09 |
curl_setopt($ch, CURLOPT_URL,
$remote_server);
|
10 |
curl_setopt($ch, CURLOPT_POSTFIELDS,
'mypost='. $post_string);
|
11 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
12 |
curl_setopt($ch, CURLOPT_USERAGENT,
"snsgou.com's CURL Example beta");
|
13 |
$data= curl_exec($ch);
|
14 |
curl_close($ch);
|
15 |
16 |
return$data;
|
17 |
} |
Curl版本(2)
01 |
/** |
02 |
* 发送HTTP请求
|
03 |
*
|
04 |
* @param string $url 请求地址
|
立即学习“PHP免费学习笔记(深入)”;
05 |
* @param string $method 请求方式 GET/POST
|
06 |
* @param string $refererUrl 请求来源地址
|
07 |
* @param array $data 发送数据
|
08 |
* @param string $contentType
|
09 |
* @param string $timeout
|
10 |
* @param string $proxy
|
11 |
* @return boolean
|
12 |
*/
|
13 |
functionsend_request($url,
$data, $refererUrl= '', $method= 'GET',
$contentType= 'application/json',
$timeout= 30, $proxy= false) {
|
14 |
$ch= null;
|
15 |
if('POST'=== strtoupper($method)) {
|
16 |
$ch= curl_init($url);
|
17 |
curl_setopt($ch, CURLOPT_POST, 1);
|
18 |
curl_setopt($ch, CURLOPT_HEADER,0 );
|
19 |
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
|
20 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
21 |
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
|
22 |
curl_setopt($ch, CURLOPT_TIMEOUT,
$timeout);
|
23 |
if($refererUrl) {
|
24 |
curl_setopt($ch, CURLOPT_REFERER,
$refererUrl);
|
25 |
}
|
26 |
if($contentType) {
|
27 |
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Content-Type:'.$contentType));
|
28 |
}
|
29 |
if(is_string($data)){
|
30 |
curl_setopt($ch, CURLOPT_POSTFIELDS,
$data);
|
31 |
} else{
|
32 |
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
|
33 |
}
|
34 |
} elseif('GET'=== strtoupper($method)) {
|
35 |
if(is_string($data)) {
|
36 |
$real_url= $url. (strpos($url,
'?') === false ? '?': '').
$data;
|
37 |
} else{
|
38 |
$real_url= $url. (strpos($url,
'?') === false ? '?': ''). http_build_query($data);
|
39 |
}
|
40 |
41 |
$ch= curl_init($real_url);
|
42 |
curl_setopt($ch, CURLOPT_HEADER, 0);
|
43 |
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Content-Type:'.$contentType));
|
44 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
45 |
curl_setopt($ch, CURLOPT_TIMEOUT,
$timeout);
|
46 |
if($refererUrl) {
|
47 |
curl_setopt($ch, CURLOPT_REFERER,
$refererUrl);
|
48 |
}
|
49 |
} else{
|
50 |
$args= func_get_args();
|
51 |
returnfalse;
|
52 |
}
|
53 |
54 |
if($proxy) {
|
55 |
curl_setopt($ch, CURLOPT_PROXY,
$proxy);
|
56 |
}
|
57 |
$ret= curl_exec($ch);
|
58 |
$info= curl_getinfo($ch);
|
59 |
$contents= array(
|
60 |
'httpInfo'=> array(
|
61 |
'send'=> $data,
|
62 |
'url'=> $url,
|
63 |
'ret'=> $ret,
|
64 |
'http'=> $info,
|
65 |
)
|
66 |
);
|
67 |
68 |
curl_close($ch);
|
69 |
return$ret;
|
70 |
} |
调用 WCF接口 的一个例子:$json = restRequest($r_url,'POST', json_encode($data));
以上就介绍了php实现post和get,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号