1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Yahoo!ショッピング 商品画像アップロードAPIでInternalServerError(500)になる

Last updated at Posted at 2015-02-08

お世話になっております。
現在Yahoo!ショップに自前のECサイトから商品データをAPI経由で登録しようとしております。商品登録APIを使って商品情報を登録することはできたのですが、商品画像のアップロードAPIではInternalServerErrorになり原因が分からず困っております。
下記のようなプログラムでAPIに送信しているのですが、
記述方法又は仕様について、間違っている点があれば、教えていただけますでしょうか。
どうぞ、宜しくお願いいたします。

補足としまして、testという商品コードの商品情報は登録済みで、
test.jpgをストアエディタ上から画像アップロードすると無事登録されることは
確認しました。seller_idは適当に変更しております。

define('IMG_UPLOAD_URL', 'https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/uploadItemImage');
define('CRLF', "\n");

$filename = "test.jpg";
$boundary = md5(date('U'));
$contentType = "Content-Type: multipart/form-data; boundary=" . $boundary;

$data = '';
$data .= "--$boundary" . CRLF;
$data .= "Content-Disposition: form-data; name=\"file\"; filename=\"{$filename}\"". CRLF;
$data .= 'Content-Type: application/octet-stream'. CRLF;
$data .= file_get_contents($filename). CRLF;
$data .= "--$boundary--" . CRLF;

$headers = array(
            $contentType,
            "Authorization:Bearer ".$access_token,
            'Content-Length: '.strlen($data)
);

$options = array('http' => array(
            'method'  => 'POST',
            'content' => $data,
            'header'  => implode(CRLF, $headers)
));
$contents = file_get_contents(IMG_UPLOAD_URL.'?seller_id=myshop', false, stream_context_create($options));

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?