I have an oauth connection - it works well with all other requests, but one: upload image for listings. Here is the code:
$connection = $this->getEtsyConnection();
$imageApiUrl = 'https://openapi.etsy.com/v2/listings/'.$listingId.'/images';
$mimeType = mime_content_type($source_file);
$filesize = filesize($source_file);
$params = ['@image' => ''.$source_file.';type='.$mimeType, 'rank'=>1, 'overwrite'=>true, 'listing_id'=>intval($listingId) ];
$header = [
'Content-Type' => 'multipart/form-data',
];
try {
if ( file_exists( $source_file ) ) {
$connection->fetch($imageApiUrl, $params, OAUTH_HTTP_METHOD_POST, $header);
$json = $connection->getLastResponse();
print_r( json_decode($json, true) );
}
} catch (\OAuthException $e) {
$json = $connection->getLastResponse();
print_r( $json );
print_r( $params );
print_r( $header );
print_r( $connection->debugInfo );
print_r( $e->getMessage() );
}
But, the response is:
"headers_recv" => """
HTTP/1.1 400 Bad Request\r\n
Server: Apache\r\n
Set-Cookie: uaid=uaid%3D02SXR92A2MZuWR1R4gUobQcxhvYR%26_now%3D1520781833%26_slt%3D2KFBr_F0%26_kid%3D1%26_ver%3D1%26_mac%3Dym0kPXlXkm33j2_65CRxbmbOVWQ5Cb7aM1aSZIWzihw.; expires=Thu, 11-Apr-2019 07:42:13 GMT; Max-Age=34186700; path=/; domain=.etsy.com; secure; HttpOnly\r\n
X-Etsy-Request-Uuid: EurHmFgGFL9b1gGn4HleCGHmwRd3\r\n
X-Error-Detail: The request body is too large\r\n
Cache-Control: private\r\n
Set-Cookie: zuaid=uaid%3D02SXR92A2MZuWR1R4gUobQcxhvYR%26_now%3D1520781833%26_slt%3DIpYGzeIk%26_kid%3D1%26_ver%3D1%26_mac%3DwMLVY4w5yOPNJ9uLZMSaJIbmYA1rbvw7eOoS25FRu30.; expires=Tue, 10-Apr-2018 15:23:53 GMT; Max-Age=2592000; path=/; domain=.etsy.com; secure; HttpOnly\r\n
Set-Cookie: user_prefs=kJV1qV14EKx95Oq3MxB4K75uceRjZACCqKVenDA6Oq80J0eHZCKWAQA.; expires=Mon, 11-Mar-2019 15:23:53 GMT; Max-Age=31536000; path=/; domain=.etsy.com\r\n
Content-Type: text/plain;charset=UTF-8\r\n
Content-Length: 29\r\n
Accept-Ranges: bytes\r\n
Date: Sun, 11 Mar 2018 15:23:53 GMT\r\n
Via: 1.1 varnish\r\n
Connection: close\r\n
X-Served-By: cache-hhn1532-HHN\r\n
X-Cache: MISS\r\n
X-Cache-Hits: 0\r\n
X-Timer: S1520781834.592519,VS0,VE351
"
"body_recv" => "The request body is too large"
What am I missing? The file is not uploaded, and the error above is received.
Have you tried using their PHP script:
I'm not familiar with PHP and am getting the same error message but from C#.
I ask because, if you get the same response using their PHP script (but with your values obviously) then you can raise a support request with them (Etsy Developer Support ) and point out that "it doesn't work". Etsy Support should then try the request at their end and if it works, you know you're doing something wrong (back to square one I know, but at least you know it should work...). But if they come back with "Ah, it's broken"...
My problem is that it used to work, and I have an example response from the call, but now it doesn't (I'm using RestSharp to make authenticated calls).