Etsy API 图片上传错误

2023-12-20

我有一个 oauth 连接 - 它可以很好地处理所有其他请求,但有一个: 上传列表图像。 这是代码:

$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() );
}

但是,得到的回应是:

"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"

我缺少什么?文件未上传,出现上述错误。


经过多次尝试,我找到了使用curl的解决方法。我想我应该分享它,这样任何有同样问题的人都可以使用它。

$oauth = new OAuth($api_key, $api_secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$oauth->setToken($access_token, $access_token_secret);

$url = "https://openapi.etsy.com/v2/listings/864452611/images";
$method = "POST";
$image_path = "/path/to/image.jpg";

$file = new \CURLFile($image_path, mime_content_type($image_path), basename($image_path));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => $file));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'method' => $method,
    'header' => 'Content-Type: multipart/form-data; boundary=' . microtime(true),
    'header' => 'Authorization: ' . $oauth->getRequestHeader($method, $url)
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);
print_r(json_decode($server_output, true));

curl_close ($ch); 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Etsy API 图片上传错误 的相关文章

随机推荐

  • 如何使用SQL Server的OUTPUT子句进行更新

    DECLARE t2 AS TABLE id INT INSERT INTO dbo EntityMaster EntityType OUTPUT INSERTED EntityId INTO t2 SELECT G FROM tmp tm
  • 无法在 Winforms 中使用 C# 使用 datagridview 添加新行

    我想做一个简单的数据输入应用程序 所以我做了以下事情 创建了一个新的 Windows 窗体应用程序 添加了 DataGridView 添加了一个新的数据源 SQL Express 数据库 有一个包含 3 列的表 id name number
  • Mac/Safari 上的字体粗细变轻

    On my last website the text is perfect naturally on chrome and firefox without touching font smoothing or anything else
  • 使用音轨从线程更新用户界面

    我有一个应用程序 可以使用audiorecord 和audiotrack 来录制音频来播放 我在用户界面中有一个进度条 需要随着曲目的播放而增加 audiotrack api 表示读取和写入方法是阻塞的 这意味着用户界面被冻结直到写入完成
  • 在构建时生成 Nuget 包不包含所有依赖项

    我的解决方案的树如下所示 项目A 引用 Nuget 包 Some Package 项目B 参考文献 项目 A 构建时 项目 B 生成一个包 我们称之为PackageB 在 ProjectB csproj 中我使用了以下内容
  • nltk:如何防止专有名词的词干

    我正在尝试使用斯坦福词性标注器和 NER 编写一个关键字提取程序 对于关键字提取 我只对专有名词感兴趣 这是基本方法 通过删除字母以外的任何内容来清理数据 删除停用词 每个词的词干 确定每个单词的 POS 标签 如果 POS 标签是名词 则
  • Firebase Firestore 模拟器如何工作?

    到目前为止 我一直在使用 Firebase Hosting 和 Functions 模拟器 但现在我正在编写一个基于 Firestore 触发器运行的函数 因此我正在研究 Firestore 模拟器进行开发 但它是如何运作的呢 它完全模仿
  • 关于 std::abs 函数

    Is the std abs 为 C 11 中的所有算术类型明确定义的函数 并将返回 x 没有近似问题吗 奇怪的是 对于 g 4 7 std abs char std abs short int std abs int std abs lo
  • docker 镜像可以在不同的 Linux 风格之间移植吗?

    docker 镜像可以在不同的 Linux 风格之间移植吗 比方说 如果我有基于 OEL 的 docker 镜像并安装了数据库 我可以在 Mac 上的 boot2docker 中运行它吗 是的 您可以存档图像 docker save htt
  • Google Python 风格指南 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么谷歌Python风格指南 https google github io styleguide pyguide html更喜欢列表推导式和
  • 相机捕获图像后 Phonegap 应用程序退出。 [安卓]

    我在使用 Phonegap 1 4 1 时遇到错误 我创建的phonegap应用程序在拍照后返回到应用程序后重新启动 这是我正在使用的代码 function capturePhoto Take picture using device ca
  • Mailitem.PrintOut() 转 PDF

    我想将完整的电子邮件打印为 pdf 格式 标准打印机选择为 microsoft Print to PDF 运行打印输出方法 出现一个保存窗口 我不知道如何以编程方式处理它 我仍然知道通过单词对象进行转换的方法 但这不起作用 因为屏幕截图不会
  • 如何将使用docker创建的MySQL连接到另一个端口(不是端口3306)?

    我已经在我的电脑上安装了 mySql 所以端口 3306 已经很忙 这就是为什么我必须使用 3306 以外的端口的原因 我希望能够在不使用 docker 命令的情况下将我的机器连接到我的 docekr 实例 这样我就能够使用我的应用程序 S
  • Hibernate 覆盖 @transient

    我有一个映射的超类 它有一个我的数据库中的一些表共享的字段 我希望用 Transient 注释这个字段 这样大多数实体都会忽略它 但在子实体上 de Transient 或 un Transient 这可能吗 谢谢你 伊多布 您也许可以使用
  • 用于特定运行配置的 IntelliJ 键盘快捷键

    我有一个 JUnit 运行配置来运行所有单元测试 如何将键盘快捷键绑定到 JUnit 配置的运行 现在有一个第三方插件 将配置作为操作运行 https plugins jetbrains com plugin 9448 run config
  • 通过http协议上传位图到服务器

    我有一个相机活动 之后我拍照并将其保存到图库并上传到服务器我的上传代码不起作用 我需要这方面的帮助吗 图像捕捉 Intent intent new Intent android media action IMAGE CAPTURE star
  • 在日期时间数据类型中插入 NOW() 值将返回 0000-00-00 00:00:00

    我有一个数据库 它有一个完美运行的 NOW 函数 显示正确的日期 并且在不小心删除了它之后 我创建了一个类似的数据库 但是当我插入 NOW 来插入时 current 当前日期 它将插入为 0000 00 00 00 00 00 显示的警告是
  • 如何从 n x 3 数据集绘制非凸曲面

    R中有没有直接绘制非凸曲面的方法 我对凸面使用了类似以下的东西 效果很好 xyz lt cbind y x z tbr lt t surf tri xyz delaunayn xyz rgl triangles xyz tbr 1 xyz
  • 如何将许多 php 变量传递给 python

    我使用以下代码启动 python 脚本并向其传递 php 变量 tmp exec python path to pythonfile py myVariable mySecondVariable output 这工作得很好 我的问题是我需要
  • Etsy API 图片上传错误

    我有一个 oauth 连接 它可以很好地处理所有其他请求 但有一个 上传列表图像 这是代码 connection this gt getEtsyConnection imageApiUrl https openapi etsy com v2