您好我已经编写以下代码以使用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
谢谢
答案 0 :(得分: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+'));
希望以上有所帮助。
亲切的问候,
大卫
答案 1 :(得分: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;
}
关于David关于密码的答案,您需要将其设置为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);