如何使用PHP读写cloudant

时间:2013-07-15 23:01:26

标签: cloudant

我一直在尝试使用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"}           

4 个答案:

答案 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之间的集成非常出色。

http://www.saggingcouch.com/

http://www.bluemix.net

答案 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);