2 回答
TA贡献1790条经验 获得超9个赞
对代码进行了一些更改。
由于 将始终是常量,因此您可以在类中将其声明为常量。
call_url其次,您正在将值逐个连接,这是不需要的。您可以使用
http_build_query函数来实现此目的。$field&第三个是你有这是不正确的,因为这说只有当我们有超过0个字段时才发出POST请求。无论是否如此,您都希望提出适当的请求。因此,请将其设置为始终。
curl_setopt($ch,CURLOPT_POST, count($fields));true
片段:
TA贡献2011条经验 获得超2个赞
<?php
namespace THBS_API;
class THBS_API{
private const call_url = "https://xxxxxxxxxxx.com/API/endsoftware.php";
public static function getUsers(){
$base_url = $_SERVER['SERVER_NAME'];
$fields = array(
'API_USER' => urlencode('xxxxxx@xxxxxx.xxx'),
'API_PASS' => urlencode('xxxxxxxxx'),
'CMD' => urlencode('getUserCount'),
'FROM' => urlencode($base_url)
);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, self::call_url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); // add certificates once you have them(recommended)
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
$response = json_decode($result, true);
return $response['response_status'];
}
}
echo THBS_API::getUsers();
更新:
正如评论中提到的@Dharman,您应该始终向cURL请求添加证书,以避免中间人攻击,此答案显示了如何在cURL请求中添加一个证书。
此外,您可以简单地使用而不是单独编码每个,就像无论如何都会这样做一样。因此,请从上面的代码中删除。http_build_queryhttp_build_queryurlencode
- 2 回答
- 0 关注
- 439 浏览
添加回答
举报
