4

PHP と Curl を使用して XML データを Shopify に投稿できません。私は持っている:

$xml = '<?xml version="1.0" encoding="UTF-8"?><variant><id type="integer">260293006</id><fulfillment-service>manual</fulfillment-service><inventory-management>shopify</inventory-management><inventory-policy>deny</inventory-policy><sku>s136</sku><inventory-quantity type="integer">48</inventory-quantity><price>17.95</price></variant>';
$url = 'https://' . $API_KEY . ':' . $PASSWORD . '@' . $STORE_URL . '/admin/variants/#260293006.xml';

私のコードは次のとおりです。

$session = curl_init();
curl_setopt($session, CURLOPT_URL, $url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($session, CURLOPT_MAXREDIRS, 3);
curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_POSTFIELDS, $xml);
curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8'));
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
echo $response;
curl_close($session);

このタイトルのShopifyページから返されるもの:

<title>Shopify &raquo; Please Log In</title>

おそらく明らかな何かが欠けていると思います。この機能が動作するようになれば、他のすべては簡単に構築できるはずです。本当にありがとう。

4

2 に答える 2

5

みんな、ありがとう。このフィードバックに基づいて、問題を解決することができました。主要課題:

  1. ユーザー457786が提案したように、#は必要ありません
  2. user-457786のリンクに基づいて見つけたPOSTではなく、PUTメソッドである必要があります
  3. CURL へのその他の変更点:

    $fp = tmpfile();
    fwrite($fp, $xml);
    fseek($fp, 0); 
    $session = curl_init();
    curl_setopt($session, CURLOPT_URL, $url);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($session, CURLOPT_PUT, true);
    curl_setopt($session, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($session, CURLOPT_INFILE, $fp); // file pointer
    curl_setopt($session, CURLOPT_INFILESIZE, strlen($xml));   
    curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
    $response = curl_exec($session);
    fclose($fp);
    curl_close($session);
    
于 2012-12-12T07:00:14.763 に答える
2

#には必要ないと思います$url, そうあるべきです

$url = 'https://' . $API_KEY . ':' . $PASSWORD . '@' . $STORE_URL . '/admin/variants/260293006.xml';
于 2012-12-11T17:46:32.687 に答える