0

嗨,我在下面编写了此代码以使用 bigcommerce API。但它似乎有一些服务器问题。我的服务器是 PHP >5.3 & curl 启用但 API 似乎没有返回任何响应。谁能帮我解决这个问题?

这是我的代码

    $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, 'https://store-bwvr466.mybigcommerce.com/api/v2'); 
    curl_setopt($ch, CURLOPT_USERPWD, 'demo'.':'.'df38dd10e9665a3cfa667817d78ec91ee9384bc3');
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); 

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));

    $result = curl_exec($ch); 

    curl_close($ch);

 echo "<textarea>".$result."</textarea>";

 phpinfo();

您可以将其签入我的实时服务器http://fuzonmedia.com/big/server_test.php

谢谢

4

2 回答 2

0

跟进上一个答案 - 您还可以使用 Bigcommerce PHP 库 ( https://github.com/bigcommerce/bigcommerce-api-php ),它提供了一种使用 PHP 与 API 交互的更简单方法。您可以访问以下产品 -

require 'vendor/autoload.php';
use Bigcommerce\Api\Client as Bigcommerce;
$products = Bigcommerce::getProducts();

    foreach($products as $product) {
        echo $product->name;
        echo $product->price;
    }

关于大卫关于密码的回答,您需要将其设置为 rsa_rc4_128_sha,类似于以下内容。希望这会有所帮助。-

Bigcommerce::configure(array(
'store_url' => 'https://store-xxx.mybigcommerce.com',
'username' => 'admin',
'api_key' => 'xxxxxx'
));
Bigcommerce_Api::setCipher('rsa_rc4_128_sha')
Bigcommerce_Api::verifyPeer(false);
于 2013-02-21T15:46:02.487 回答
0

Bigcommerce API 的所有请求都需要使用 SSL_RSA_WITH_RC4_128_SHA 密码进行加密。API 的大多数初始问题是由于在发送请求时没有告诉 cURL 使用正确的密码。当您的系统使用NSS库来处理加密时,您可以通过以下代码行告诉 cURL 使用哪个密码。

    curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'rsa_rc4_128_sha');

如果这不能解决您的问题,您需要检查 cURL 是否返回任何错误。您可以通过如下修改代码来做到这一点。

    $result = curl_exec($ch); 
    if ($result === false) {
        echo '<textarea>'.curl_error($ch).'</textarea>'; 
    } else {
        echo "<textarea>".$result."</textarea>";
    }
    curl_close($ch);

输出错误消息可能会为您提供更多关于出现问题的线索。您还可以通过打开详细选项来获取更多信息。请注意,此信息会输出到STDERR,因此您不会在网页上看到它,除非您将STDERR重定向到STDOUT,即浏览器窗口。

    // Switch on verbose information and display it on the web page.
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w+'));

希望以上有所帮助。

亲切的问候,
大卫

于 2013-02-12T22:35:54.297 回答