0

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

4 回答 4

1

根据How do I make a request using HTTP basic authentication with PHP curl? ,您需要在 URL 之外设置基本身份验证凭据。使他们的示例适应您的变量名称:

curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);

于 2013-07-16T10:24:29.427 回答
0

如果您使用 PHP 与 Cloudant 数据库进行交互,您可能需要查看 SAG api 库。这使事情变得相当容易。在他们的网站上有一些关于如何使用这个 API 的很好的例子。希望这可以帮助。

您可能还想查看 IBM 的新 Bluemix 环境,他们将 Cloudant 作为可用服务之一。Cloudant 和Bluemix 之间的集成非常出色。

http://www.saggingcouch.com/

http://www.bluemix.net

于 2014-07-11T20:48:24.927 回答
0

我已经将 Node.js 和 NodeExpress 与 Cloudant 一起使用。你可以为 PHP 做类似的事情。看看这2个帖子有没有帮助

采用 IBM Bluemix、Cloudant 和 Node.js 的 Cloud Medley 采用 Bluemix 、Cloudant 和 NodeExpress 的摇滚乐

于 2014-08-29T10:40:34.230 回答
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);
于 2016-05-24T14:21:10.723 回答