首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快门股票API PHP发布对象格式

快门股票API PHP发布对象格式
EN

Stack Overflow用户
提问于 2018-03-13 10:32:24
回答 2查看 176关注 0票数 0

我正在与交谈。我确信问题不是SS,而是我的PHP Curl帖子的格式,就好像我通过终端发送这个请求一样,我得到了一个正确的响应。

终点站卷曲中心如下:

代码语言:javascript
运行
复制
curl "https://api.shutterstock.com/v2/images/licenses?subscription_id=$SUBSCRIPTION_ID" \
         --header "Authorization: Bearer $ACCESS_TOKEN" \
         --header "Content-Type: application/json" \
         -X POST \
         --data '{
           "images": [
             { "image_id": "137111171" }
           ]
        }

因此,我正在处理将其作为PHP卷发送的问题,下面是我所拥有的:

代码语言:javascript
运行
复制
$url = 'https://api.shutterstock.com/v2/images/licenses?subscription_id='.$SUBSCRIPTION_ID;
        $params = new Object();
        $params = {
            'images' : {'image_id' : '137111171'}
        };

        $headers = [
          'Content-Type: application/json',
          'Authorization: Bearer '.$ACCESS_TOKEN
        ];

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 2);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_decode($params));
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_USERAGENT,'Butterfly');
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);
        curl_close($ch);
        /*$json = json_decode($response, true);
        if (json_last_error()) {
          echo '<span style="font-weight:bold;color:red;">Error: ' . $response . '</span>';
        } else {*/
        return $response;

响应表单Shutter是"Decode body failure“,这是一个自定义的错误响应。我认为问题在于$params变量以及它是如何格式化的。问题是,这是一个帖子,我怀疑在另一边,党卫军正在具体地解码这一点。正确的curl参数位于上面的bash curl中,如下所示:

代码语言:javascript
运行
复制
--data '{
               "images": [
                 { "image_id": "137111171" }
               ]

有人对如何正确格式化这个特定的数据值有什么建议吗?这样我就可以把它作为帖子发送了吗?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2018-03-13 11:16:03

您的PHP代码包含无效的语法,而且PHP没有名为Object的类,但是您可能在寻找StdObject,但是即使这样也没有什么意义。另外,您也没有对$SUBSCRIPTION_ID进行urlencoding编码。删除无效的语法部分,使用json_encode,而不是json_decode。

代码语言:javascript
运行
复制
curl_setopt ( $ch, CURLOPT_POSTFIELDS, json_encode ( array (
        'images' => array (
                array (
                        'image_id' => '137111171' 
                ) 
        ) 
), JSON_OBJECT_AS_ARRAY ) );

(按注释编辑,api要求适用的数据为数组而不是对象,因此我添加了JSON_OBJECT_AS_ARRAY标志。)

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49253844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档