[咆哮] 如果他们使用 cookie 进行身份验证,他们就不是 ReSTful。[/咆哮]
为了处理这个 API,你需要学习做以下事情(感谢他们粗制滥造的实现):
- 使用卷曲
- 使用 CURL 饼干罐
这两点很容易。就是有点蛋疼。为了让我们的生活更轻松,我们将在 PHP 中定义一个 API 包装器来执行调用。
<?php
class APIWrap {
private $jarFile = false;
function __construct($jarFile=null) {
if ($jarFile) {
if (file_exists($jarFile)) $this->jarFile = $jarFile;
else {
touch($this->jarFile);
$this->jarFile = $jarFile;
}
}
else {
$this->jarFile = "/tmp/jar-".md5(time()*rand(1,10000000)).".cookie";
}
}
/* The public methods */
public function call_url($url) {
return $this->_call_url($url);
}
public function logIn($email,$password) {
return $this->_call_curl("https://www.domain.com/members/login/auth",array("email" => $email, "pswd" => $password));
}
/* Our curl channel generator */
protected function _call_curl($url,$post=array()) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if (count($post)) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->jarFile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
return curl_exec($ch);
}
}
随意设置 curlopt 调用 - 它们用于参考目的。重要的是CURLOPT_COOKIEJAR。