首页 > 解决方案 > Invoke-RestMethod - POST 响应格式不是 JSON?

问题描述

如果我使用 PUT、DELETE 或 GET 等方法,我没有任何问题。 $wresponse是正常的 JSON 响应。

当我尝试使用 POST 时,我得到的响应看起来像 HTML。

执行代码:

$wresponse = Invoke-RestMethod -Uri https://**************/wp-json/wc/v3/products/ -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body -ContentType "application/json" -Method post

执行产品通常添加到数据库后,但响应如下所示(del 标记后的 JSON?):

    <head>
    <title>Document Moved</title>
</head>
<body>
    <h1>Object Moved</h1>This document may be found
    <a HREF="https://*************/wp-json/wc/v3/products/1507">here</a>
</body> {"id":1507,"name":"test article","slug":"test-article","permalink":"https:\/\/************\/izdelek\/testni-artikel\/","date_created":"2019-01-29T11:29:15","date_created_gmt":"2019-01-29T10:29:15","date_modified":"2019-01-29T11:29:15","date_modified_gmt":"2019-01-29T10:29:15","type":"simple","status":"publish","featured":false,"catalog_visibility":"visible","description":"bla bla bla","short_description":"bla bla bla","sku":"","price":"10","regular_price":"20","sale_price":"10","date_on_sale_from":null,"date_on_sale_from_gmt":null,"date_on_sale_to":null,"date_on_sale_to_gmt":null,"price_html":"
<del>
    <span class=\"woocommerce-Price-amount amount\">
        <span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span>20.00<\/span><\/del>
            <ins>
                <span class=\"woocommerce-Price-amount amount\">
                    <span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span>10.00<\/span><\/ins>","on_sale":true,"purchasable":true,"total_sales":0,"virtual":false,"downloadable":false,"downloads":[],"download_limit":-1,"download_expiry":-1,"external_url":"","button_text":"","tax_status":"taxable","tax_class":"","manage_stock":false,"stock_quantity":null,"stock_status":"instock","backorders":"no","backorders_allowed":false,"backordered":false,"sold_individually":false,"weight":"812","dimensions":{"length":"100","width":"200","height":"300"},"shipping_required":true,"shipping_taxable":true,"shipping_class":"","shipping_class_id":0,"reviews_allowed":true,"average_rating":"0","rating_count":0,"related_ids":[298,342,229,224,32],"upsell_ids":[],"cross_sell_ids":[],"parent_id":0,"purchase_note":"","categories":[{"id":17,"name":"BABY LINE","slug":"baby-line"}],"tags":[],"images":[],"attributes":[],"default_attributes":[],"variations":[],"grouped_products":[],"menu_order":0,"meta_data":[],"_links":{"self":[{"href":"https:\/\/***************\/wp-json\/wc\/v3\/products\/1507"}],"collection":[{"href":"https:\/\/*******************\/wp-json\/wc\/v3\/products"}]}}    

问题可能出在哪里?或者这是正常的,我应该以某种方式从这个响应中提取 JSON?

标签: jsonpowershellpostresponse

解决方案


这称为POST/REDIRECT/GET。网站这样做是为了防止从网络浏览器重复提交。这是一个服务器端实现问题,而不是您的 PowerShell 问题(除非 API 文档提到此重定向,在这种情况下,您需要让 PowerShell 处理重定向并遵循它)。


推荐阅读