当前位置: 首页 > 知识库问答 >
问题:

尝试在Shopify上发布请求时,Requests出现400个错误

寿子默
2023-03-14

我试图创建一个请求python脚本,将添加到购物车,并最终结帐。我发了一个帖子请求(https://yeezysupply.com/cart/add.js)这是我在网络chrome开发者工具页面中找到的添加到购物车的endpoint。它有一个包含3个字典的json负载。Id是产品的变体Id,我不知道它是什么,所以我把它留空了,还有数量。当我执行Post请求时,我将数据作为参数输入。我收到一个400响应错误。当我打印请求文本时,我的购物车中没有添加任何内容,我收到了这个。

{
   "status":"bad_request",
   "message":"expected String to be a Hash: properties",
   "description":"expected String to be a Hash: properties"
}

我对请求很陌生,所以我不确定这个错误意味着什么。我能够确认没有向我的购物车添加任何内容,因为我对shopify购物车endpoint执行了get请求(https://yeezysupply.com/cart.json). 当我打印get请求时,我得到了这个。

{
   "token":"cb67e6c53c63b930b4aca1eb3b5a7510",
   "note":null,
   "attributes":{

   },
   "original_total_price":0,
   "total_price":0,
   "total_discount":0,
   "total_weight":0.0,
   "item_count":0,
   "items":[

   ],
   "requires_shipping":false,
   "currency":"USD",
   "items_subtotal_price":0,
   "cart_level_discount_applications":[

   ]
}

这证实了我的购物车中没有添加任何内容。有人知道我做错了什么吗?我用于测试的产品是(https://yeezysupply.com/products/flannel-lined-canvas-jacket-medium-blue?c=/collections/women)

我尝试创建一个全局请求会话来查看我是否需要cookie。这也不起作用。

import requests
from bs4 import BeautifulSoup as soup
session = requests.Session()

atc_endpoint = 'https://yeezysupply.com/cart/add.js'
atc_info = {
    "id": "1457089478675",
    "properties": "{}",
    "quantity": "1"
}
def add_to_cart():
    pass

atc_post = session.post(atc_endpoint, data=atc_info)
atc_get = session.get('https://yeezysupply.com/cart.json')
print(atc_post.text)

我尝试使用标头,我使用了标头={"Content-Type":"Application/json"}我收到了以下错误:

{
   "error":"822: unexpected token at 'id=1457089478675\u0026properties=%7B%7D\u0026quantity=1'"
}

我不确定api要求什么令牌。我希望在我的购物车中包含该项目并显示在get请求文本中。

共有2个答案

梁学真
2023-03-14

因此,您正在构建一个机器人来检查产品(看起来无论如何)。使用Python不会冒犯你的天赋,但如果你只是使用Javascript让你的机器人按你的意愿运行,你的生活会变得更好。因为它自然地内置在浏览器中,所以您的工作会简化。

如果你想像你的问题所表明的那样用Python运行你的机器人服务器端,并且一篇帖子给你带来了麻烦,那就等着脚本签出吧!我甚至不确定你现在是否能做到这一点,所以你可能想暂停你的计划,直到你可以毫无疑问地退房。你调查过了吗?

邓嘉致
2023-03-14

尝试以下操作-

添加{“Content Type”:“application/json”}作为请求的标题。看起来是这样的-

headers {"Content-Type": "application/json"}
atc_post = session.post(atc_endpoint, data=atc_info, headers=headers)

这应该有用。你的字典看起来不错,但是如果这仍然给出错误,在发送之前试着在你的字典上使用json.loads

希望这有帮助。:)

 类似资料:
  • 我有一个REST api服务,它应该接收POST调用。 我正在使用POSTMAN来测试它们,但我不断收到400错误请求错误,没有身体,也许我正在构建糟糕的控制器... 这是控制器 我应该使用< code>@RequestBody用JSON发送请求,如下所示: 但我得到了一个400错误,奇怪的是我的记录器<代码>记录器。调试(“控制器命中”)它没有打印在日志中。。。

  • 我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!

  • 我在InteliJ/Java/RestAssured中收到一个400错误的POST请求,但在Postman中没有,所以谁能告诉我哪里出错了,请先告诉Postman 我的身体参数是 现在,当我发布这篇文章时,我得到了200条回复和一个不错的新访问令牌。当我在Java/RestAssured中尝试同样的方法时,我得到一个400错误的请求错误,这就是我发布的内容。 身体 每次运行这个程序,我都会收到HT

  • 问题内容: 我正在尝试通过前端发布数据,而烧瓶应用程序抛出了400个错误的请求。但是,如果我使用Curl call做同样的事情,它似乎工作正常。我不知道表格中缺少什么。 以下是我的表单代码 在服务器端: 服务器端对我来说似乎很好。由于我收到卷曲请求的响应 问题答案: 嗯,我想我明白了:您只为元素设置,但未设置。仍用于发送到服务器的表单数据中。这导致在这导致400错误。

  • 问题:我正在按照本指南通过Spring MVC上传文件:https://Spring.io/guides/gs/uploading-files/。但是,当我这样做时,当我通过.jsp页面上的表单上传一个文件时,我总是会收到以下错误: HTTP状态400-所需的字符串参数“name”不存在 类型状态报告 message Required字符串参数“name”不存在 描述客户端发送的请求语法不正确。