我一直在尝试使用PHP在cloundant上使用Curl示例。但是,我没有尝试任何工作。我想做的只是使用PHP在cloundant上读取,写入和搜索数据。但是,开始的开发人员似乎没有一种简单的方法可以做到这一点。
代码在这里:
//Get DB's
$returned_content = get_data('https://**InstanceName**:**Password**@**InstanceName**.cloudant.com/_all_dbs');
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
我得到的错误是:
{"error":"unauthorized","reason":"Name or password is incorrect"}
答案 0 :(得分:1)
根据How do I make a request using HTTP basic authentication with PHP curl?,您需要在URL之外设置基本身份验证凭据。使他们的示例适应您的变量名称:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
答案 1 :(得分:0)
如果您使用PHP与Cloudant数据库进行交互,则可能需要查看SAG api库。这使事情变得相当容易。有关如何在其网站上使用此API的一些很好的示例。希望这可以帮助。
您可能还想查看IBM新的Bluemix环境,他们将Cloudant作为可用服务之一。 Cloudant和Bluemix之间的集成非常出色。
答案 2 :(得分:0)
我使用过Node.js& NodeExpress与Cloudant。你可以为PHP做类似的事情。看看这两篇文章是否有帮助
A Cloud Medley with IBM Bluemix, Cloudant & Node.js Rock N'Roll with Bluemix, Cloudant & NodeExpress
答案 3 :(得分:0)
//这就是我在PHP中获取cloudant api密钥的方法
$username='yourusername';
$password='yourpassword';
$URL='https://yourusername.cloudant.com/_api/v2/api_keys';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
//curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
//$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code
$response=curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//$httpCode = 303; // test a fail code
if($httpCode == 201) {
$json = json_decode($response, true);
if($json['ok'] == 1) {
$cloudantkey = $json['key'];
$cloudantpassword = $json['password'];
echo "Obtained Cloud Api Keys.. <br />";
} else {
echo("error $httpCode");
die();
}
} else {
echo("error $httpCode");
die();
}
if(curl_error($ch)){
echo("curl error");
die();
}
curl_close ($ch);