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;
    }

暗号に関する 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);
于 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 に出力されるため、 STDERRSTDOUT、つまりブラウザ ウィンドウにリダイレクトしない限り、Web ページには表示されないことに注意してください。

    // 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 に答える