php请求第三方数据方法方法有很多 , 其中有file_get_contents把数据读到一个字符串中,还有一个是curl方式,两种方式有所不同 , 查一下就知道区别了
如何用php向服务器发送post请求用PHP向服务器发送HTTPphp在哪里请求数据的POST请求,代码如下php在哪里请求数据:
?php
/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data) {
$postdata = https://www.04ip.com/post/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;
}
使用的时候直接调用上面定义的send_post方法:
$post_data = https://www.04ip.com/post/array(
'username' = 'username',
'password' = 'password'
);
send_post('网址', $post_data);
php 怎么POST获取数据?方法1、最常见的方法是:$_POST['fieldname'];
说明:只能接收Content-Type:
application/x-www-form-urlencoded提交的数据
解释:也就是表单POST过来的数据
方法2、file_get_contents("php://input");
说明:
允许读取
POST
的
原始数据
。
和
$HTTP_RAW_POST_DATA
比起来 , 它给内存带来的压力较?。⑶也恍枰魏翁厥獾?
php.ini
设置 。
php://input
不能用于
enctype="multipart/form-data" 。
解释:
对于未指定
Content-Type
的POST数据 , 则可以使用file_get_contents(“php://input”);来获取原始数据 。
事实上,用PHP接收POST的任何数据都可以使用本方法 。而不用考虑Content-Type,包括
二进制文件
流也可以 。
所以用方法二是最保险的方法
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
说明:
总是产生
$HTTP_RAW_POST_DATA
变量包含有原始的
POST
数据 。
此变量仅在碰到未识别
MIME
类型的数据时产生 。
$HTTP_RAW_POST_DATA
对于
enctype="multipart/form-data"
表单数据不可用
如果post过来的数据不是PHP能够识别的,可以用
$GLOBALS['HTTP_RAW_POST_DATA']来接收,
比如
text/xml
或者
soap
等等
解释:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据 。
$_POST或
$_REQUEST
存放的是
PHP以key=value的形式格式化以后的数据 。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置 , 即POST数据时
必须显式示指明Content-Type:
application/x-www-form-urlencoded , POST的数据才会存放到
$GLOBALS['HTTP_RAW_POST_DATA']中
PHP中如何发送HTTP请求我觉得你这个正确,一眼看不出错在哪里,如果是我我就不检查了,我下面粘贴一个我使用正常的函数 , 你直接调用函数就可以了 , 调用语句可以这样:
$A=trim(urlencode($_REQUEST['A']));
$B=trim(urlencode($_REQUEST['B']));
$params="A=$AB=$B";
list($body,$header)=http_request('','POST',$params);
如果你无需检查返回结果,那就这样也可以:
http_request('','POST',$params);
函数定义如下:
//执行HTTP请求
function http_request($url,$method='GET',$data='',$cookie='',$refer=''){
$header='';
$body='';
$newcookie='';
if (preg_match('/^http:\/\/(.*?)(\/.*)$/',$url,$reg)){$host=$reg[1]; $path=$reg[2];}
else {outs(1,"URL($url)格式非法!"); return;}
$http_host=$host;
if (preg_match('/^(.*):(\d )$/', $host, $reg)) {$host=$reg[1]; $port=$reg[2];}
else $port=80;
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if (!$fp) {
outs(1,"$errstr ($errno)\n");
} else {
fputs($fp, "$method $path HTTP/1.1\r\n");
fputs($fp, "Host: $http_host\r\n");
if ($refer!='') fputs($fp, "Referer: $refer\r\n");
if ($cookie!='') fputs($fp, "Cookie: $cookie\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($data)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data . "\r\n\r\n");
$header_body=0;
$chunked_format=0;
$chunked_len=0;
while (!feof($fp)) {
$str=fgets($fp);
//$len=hexdec($str);if ($header_body==1) {echo "$str\t$len\n";$str=fread($fp,$len);echo $str;}
if ($header_body==1){
if ($chunked_format){
if ($chunked_len=0){
$chunked_len=hexdec($str);
if ($chunked_len==0) break;
else continue;
} else {
$chunked_len-=strlen($str);
if ($chunked_len=0) $str=trim($str);
//elseif ($chunked_len==0) fgets($fp);
}
}
$body.=$str;
}
else if ($str=="\r\n") $header_body=1;
else {
$header.=$str;
if ($str=="Transfer-Encoding: chunked\r\n") $chunked_format=1;
if (preg_match('|Set-Cookie: (\S )=(\S );|',$str,$reg)) $newcookie.=($newcookie==''?'':'; ').$reg[1].'='.$reg[2];
}
}
fclose($fp);
}
$GLOBALS['TRAFFIC'] =414 strlen($url) strlen($data) strlen($header) strlen($body);
if (preg_match('/^Location: (\S )\r\n/m',$header,$reg)) {
if (substr($reg[1],0,1)!='/'){
$path=substr($path,0,strrpos($path,'/') 1);
$path.=$reg[1];
} else $path=$reg[1];
if ($newcookie) $cookie=$newcookie;
return http_request('http://'.$http_host.$path,'GET','',$cookie,$url);
}
return array($body, $header, $newcookie);
}
【php在哪里请求数据 php 请求】php在哪里请求数据的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php 请求、php在哪里请求数据的信息别忘了在本站进行查找喔 。
推荐阅读
- 鸿蒙系统阴阳手机,手机版鸿蒙
- 三星q6f显卡怎么用,三星q60ra
- jQuery的鼠标经过离开事件,jquery鼠标移入事件
- 怎么取消路由器里面的程序,怎么取消路由器的wifi
- php数据库官网 php数据库在哪
- 小程序茶叶商品类目怎么填,小程序茶叶商品类目怎么填写才正确
- 德云社直播运营教程,德云社网上直播
- linux查找路径命令 linux中查找文件路径
- pg数据库建表自增字段,数据库建表主键自增