POST正文不使用wp_Remote_POST()

时间:2020-08-09 作者:Andrew-ThinkUp

我试图用以下代码发布

    $userTokenApi = \'https://api.mindbodyonline.com/public/v6/usertoken/issue\';

    $args = array(
        \'headers\' => array(
            \'Content-Type\' => \'application/json\',
            \'SiteId\' => \'6387\',
            \'Api-Key\' => \'7bba39594b4d460293abdfd64c8eea48\'
        ),
        \'body\' => array(
            \'Username\' => \'myusername\',
            \'Password\' => \'mypassword\'
        )
    );

    $request = wp_remote_post($userTokenApi, $args);
    $responseCode = wp_remote_retrieve_response_code( $request );
    $body = wp_remote_retrieve_body($request);

    if ( is_wp_error( $request ) ) {
        return false; // Bail Early
    }

    $pretty = json_decode( $body ); ?>
但我从API得到的回应是

Error:
Code: "MissingRequiredFields"
Message: "The following parameters are required: Username, Password"
这里可以看到相同操作(使用PHP)的标准HTTP请求https://developers.mindbodyonline.com/PublicDocumentation/V6#user-tokens 使用postman,我可以通过PHP-HTTP Request2、PHP-cURL和任何其他类型的代码发布和接收我的响应。

我不确定我在这里遗漏了什么或者我在documentation

任何帮助都将是惊人的。可以看到实时问题here - 控制台中有错误。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

您正在设置Content-Type 标题至application/jsonwp_remote_post() 不会智能地对请求数据进行JSON编码(body 数组),所以应该手动执行。例如:

\'body\' => json_encode( array(
    \'Username\' => \'myusername\',
    \'Password\' => \'mypassword\'
) )

相关推荐

如何通过REST_API在AJAX提交中包含文件附件?

通过jQuery和admin ajax提交表单数据时,包含文件附件很容易:var data = new FormData($(this)[0]);在向Rest控制器提交表单数据时,如何包含文件附件?这将提交除文件附件以外的所有表单字段。var data = $this.serializeArray();jQuery: $(\'#create-book-form\').submit(function (e) { var $this = $(this);