php curl改为guzzlehttp/guzzle请求返回不一样
https://github.com/unkaer/xia...
这是一段小米运动账号的登录请求
我想把此文件里面的 request_post 方法改为 guzzlehttp/guzzle
方式来写
原本的 request_post 方法
function request_post($url = '', $post_data = array(), $header = array()) {
if (empty($url) || empty($post_data)) {
return false;
}
if (empty($header)) {
$header = 0;
}
$o = "";
foreach ( $post_data as $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$postUrl = $url;
$curlPost = $post_data;
$ch = curl_init();//初始化curl
curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, true);// 返回 response_header, 该选项非常重要,如果不为 true, 只会获得响应的正文
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);//运行curl
curl_close($ch);
// print_r($data."</br>");
return $data;
}
// 调用方法
$user = '';
$password = '';
$url = 'https://api-user.huami.com/registrations/+86'. $user.'/tokens';
$data = [
'client_id' => 'HuaMi',
'password' => $password,
'redirect_uri' => 'https://s3-us-west-2.amazonaws.com/hm-registration/successsignin.html',
'token' => 'access',
];
$header = [
'Content-Type:application/x-www-form-urlencoded;charset=UTF-8',
'User-Agent:MiFit/4.6.0 (iPhone; iOS 14.0.1; Scale/2.00)',
];
request_post($url, $data, $header)
我改成 guzzlehttp/guzzle
,使用的 laravel
use Illuminate\Support\Facades\Http;
$user = '';
$password = '';
$url = 'https://api-user.huami.com/registrations/+86'. $user.'/tokens';
$data = [
'client_id' => 'HuaMi',
'password' => $password,
'redirect_uri' => 'https://s3-us-west-2.amazonaws.com/hm-registration/successsignin.html',
'token' => 'access',
];
$header = [
'User-Agent' => 'MiFit/4.6.0 (iPhone; iOS 14.0.1; Scale/2.00)',
];
//改为的 guzzlehttp/guzzle 方式
$response = Http::asForm()->withHeaders($header)->post($url, $data);
$user
传小米运动的账号,$password
传小米运动的密码
这两个请求正确的情况下,原本的 request_post
方法是返回http状态码303,我改的guzzlehttp/guzzle 方式返回是200,数据也不一样
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已解决。添加
allow_redirects
为false
即可