Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
POST请求在POSTMAN上工作,但在Python和cURL中不工作_Python_Python 3.x_Web Scraping_Python Requests_Graphql - Fatal编程技术网

POST请求在POSTMAN上工作,但在Python和cURL中不工作

POST请求在POSTMAN上工作,但在Python和cURL中不工作,python,python-3.x,web-scraping,python-requests,graphql,Python,Python 3.x,Web Scraping,Python Requests,Graphql,我正试图从一家酒店获取信息。他们有公共API来获取这些信息。如果我们检查正确,我们将得到API。当我通过邮递员发出POST请求时,它以正确的格式提供数据,但在我从邮递员粘贴到Jupyter笔记本时代码相同,得到403错误。我尝试了cURL和python3 我认为有效负载项的正确格式有问题 这是我从POSTMAN获得的Python请求模块代码- import requests url = "https://www.homeaway.co.uk/pdp/graphql" payload = "{

我正试图从一家酒店获取信息。他们有公共API来获取这些信息。如果我们检查正确,我们将得到API。当我通过邮递员发出POST请求时,它以正确的格式提供数据,但在我从邮递员粘贴到Jupyter笔记本时代码相同,得到403错误。我尝试了cURL和python3

我认为有效负载项的正确格式有问题

这是我从POSTMAN获得的Python请求模块代码-

import requests

url = "https://www.homeaway.co.uk/pdp/graphql"

payload = "{\"query\":\"\\n    query priceDetails($createTravelerCheckoutRequest: CreateTravelerCheckoutRequest) {\\n        priceDetails(createTravelerCheckoutRequest: $createTravelerCheckoutRequest) {\\n            notes {\\n                description\\n            }\\n            totals {\\n                title\\n                amount\\n                tooltip\\n                subItems {\\n                    title\\n                }\\n            }\\n            checkoutUrl\\n            instantBooking\\n            dueNow {\\n                title\\n                amount\\n                tooltips {\\n                    title\\n                    amount\\n                    tooltip\\n                }\\n            }\\n            payments {\\n                title\\n                amount\\n                paidText\\n                infoText\\n                status\\n                viewUrl\\n            }\\n            averageNightlies {\\n                perNightCost {\\n                    currency\\n                    amount\\n                    localized\\n                }\\n                type\\n            }\\n            edapEventJson\\n            edapQuoteSuccess\\n            edapPriceQuotePresented\\n            lineItems {\\n                title\\n                amount\\n                mixedCurrencyDisclaimer\\n                type\\n                tooltip\\n                subItems {\\n                    title\\n                    amount\\n                    type\\n                    tooltip\\n                }\\n            }\\n        }\\n    }\\n\",\"variables\":{\"createTravelerCheckoutRequest\":{\"unit\":\"/units/0001/06a12c46-a89b-4620-86f2-7007e2955d90\",\"arrivalDate\":\"2020-03-13\",\"departureDate\":\"2020-03-18\",\"children\":0,\"adults\":2,\"pets\":0,\"listingRef\":\"611.10570866.5597723\",\"currency\":\"USD\"}},\"operation\":\"graphql_get_pricing_quote\"}"
headers = {
    'origin': "https://www.homeaway.co.uk",
    'x-homeaway-site': "homeaway_uk",
    'user-agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36",
    'x-csrf-jwt-pdp': "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjU5N2QyZGJmYjg2MmFlZjM2Y2IzMTMxMGNkZDZlMTlkZTE0MTYwOWViYTEzYWQ1MWYzMjU2NTU5MzVlYWE4ZjRjMTZhYmM2YjY1YmVlOWQ3NzM2MDE2Njg0YTc3OGE2OTg1Nzg4M2IzYWI0YTUzZmU0N2IyNWU1YjczN2E5MzRkMTMxOWE4MjJjYTlhMzg2MTM2ZGJlODQ4N2Y2YjM3NTU2ODcxYjIwMWM3ZDYxYmNjYWFhMzM4NjYwNWMwMmU1NDJjNmQxN2NhN2FhN2VjYjNjMTI4OTcxNzI3OTEyZjg2YmQ1YzQzNTRjZTYxYTc2YTE5NzMwNzMyNGQ4NzRhYjNhODRkOWI1NDc4ZmU1ODI1NzU4YTU0MjM5ZTZmMjQzYyIsImlhdCI6MTU4MzE4MTM0MywiZXhwIjoxNTgzNzg2MTQzfQ.owkOAY8AtuQM6ghYro4OdiVSEy7uTT-UXa0vXbIoOcM",
    'sec-fetch-dest': "empty",
    'x-homeaway-displaylocale': "en_GB",
    'accept': "*/*",
    'content-type': "application/json",
    'cache-control': "no-cache",
    'postman-token': "a0782281-d7ef-96db-8c54-08f250e8ac86"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
请求的有效负载项-

{"query":"query priceDetails($createTravelerCheckoutRequest: CreateTravelerCheckoutRequest) {priceDetails(createTravelerCheckoutRequest: $createTravelerCheckoutRequest) {notes {description}totals{title amount tooltip subItems {title}}checkoutUrl instantBooking dueNow {title amount tooltips {title amount tooltip}} payments {title amount paidText infoText status               viewUrl}averageNightlies {perNightCost {currency amount localized } type}edapEventJson  edapQuoteSuccess edapPriceQuotePresented  lineItems {     title amount mixedCurrencyDisclaimer type tooltip subItems { title amount type tooltip }}}}",
"variables":{"createTravelerCheckoutRequest":
               {"unit":"/units/0001/de2ef943-c782-4179-a157-060ed12273c4","arrivalDate":"2020-03-13","departureDate":"2020-03-18","children":0,"adults":2,"pets":0,"listingRef":"611.10579173.5606075","currency":"EUR"}},
"operation":"graphql_get_pricing_quote"}
Origin:https://www.homeaway.co.uk
x-homeaway-site:homeaway_uk
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36
x-csrf-jwt-pdp:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjU5N2QyZGJmYjg2MmFlZjM2Y2IzMTMxMGNkZDZlMTlkZTE0MTYwOWViYTEzYWQ1MWYzMjU2NTU5MzVlYWE4ZjRjMTZhYmM2YjY1YmVlOWQ3NzM2MDE2Njg0YTc3OGE2OTg1Nzg4M2IzYWI0YTUzZmU0N2IyNWU1YjczN2E5MzRkMTMxOWE4MjJjYTlhMzg2MTM2ZGJlODQ4N2Y2YjM3NTU2ODcxYjIwMWM3ZDYxYmNjYWFhMzM4NjYwNWMwMmU1NDJjNmQxN2NhN2FhN2VjYjNjMTI4OTcxNzI3OTEyZjg2YmQ1YzQzNTRjZTYxYTc2YTE5NzMwNzMyNGQ4NzRhYjNhODRkOWI1NDc4ZmU1ODI1NzU4YTU0MjM5ZTZmMjQzYyIsImlhdCI6MTU4MzE4MTM0MywiZXhwIjoxNTgzNzg2MTQzfQ.owkOAY8AtuQM6ghYro4OdiVSEy7uTT-UXa0vXbIoOcM
Sec-Fetch-Dest:empty
X-HomeAway-DisplayLocale:en_GB
Accept:*/*
Content-Type:application/json
请求的标题-

{"query":"query priceDetails($createTravelerCheckoutRequest: CreateTravelerCheckoutRequest) {priceDetails(createTravelerCheckoutRequest: $createTravelerCheckoutRequest) {notes {description}totals{title amount tooltip subItems {title}}checkoutUrl instantBooking dueNow {title amount tooltips {title amount tooltip}} payments {title amount paidText infoText status               viewUrl}averageNightlies {perNightCost {currency amount localized } type}edapEventJson  edapQuoteSuccess edapPriceQuotePresented  lineItems {     title amount mixedCurrencyDisclaimer type tooltip subItems { title amount type tooltip }}}}",
"variables":{"createTravelerCheckoutRequest":
               {"unit":"/units/0001/de2ef943-c782-4179-a157-060ed12273c4","arrivalDate":"2020-03-13","departureDate":"2020-03-18","children":0,"adults":2,"pets":0,"listingRef":"611.10579173.5606075","currency":"EUR"}},
"operation":"graphql_get_pricing_quote"}
Origin:https://www.homeaway.co.uk
x-homeaway-site:homeaway_uk
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36
x-csrf-jwt-pdp:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjU5N2QyZGJmYjg2MmFlZjM2Y2IzMTMxMGNkZDZlMTlkZTE0MTYwOWViYTEzYWQ1MWYzMjU2NTU5MzVlYWE4ZjRjMTZhYmM2YjY1YmVlOWQ3NzM2MDE2Njg0YTc3OGE2OTg1Nzg4M2IzYWI0YTUzZmU0N2IyNWU1YjczN2E5MzRkMTMxOWE4MjJjYTlhMzg2MTM2ZGJlODQ4N2Y2YjM3NTU2ODcxYjIwMWM3ZDYxYmNjYWFhMzM4NjYwNWMwMmU1NDJjNmQxN2NhN2FhN2VjYjNjMTI4OTcxNzI3OTEyZjg2YmQ1YzQzNTRjZTYxYTc2YTE5NzMwNzMyNGQ4NzRhYjNhODRkOWI1NDc4ZmU1ODI1NzU4YTU0MjM5ZTZmMjQzYyIsImlhdCI6MTU4MzE4MTM0MywiZXhwIjoxNTgzNzg2MTQzfQ.owkOAY8AtuQM6ghYro4OdiVSEy7uTT-UXa0vXbIoOcM
Sec-Fetch-Dest:empty
X-HomeAway-DisplayLocale:en_GB
Accept:*/*
Content-Type:application/json
请求类型-POST

请求URL-

邮递员的回应--

来自Python请求模块的请求和响应--

谁能帮我解释一下为什么会发生这种事??如何解决这个问题


检查页面的链接是-。请参考图ql请求。

您的有效负载可能正在发挥作用。您可以以原始格式发布有效负载(不带\n)。@VishalSingh这里是不带(\n)-``的有效负载,试试看是否有区别:
response=requests.request(“post”,url,json=json.loads(payload),headers=headers)
。记住导入json模块。这将正确地将请求作为JSON有效负载发送。@MarcSances对
JSON.loads()
方法没有任何运气。当我用单引号发送负载参数时出错,但当我在Postman中使用双引号时,工作正常…在JSON.loads()之后获取此错误代码400,``{“statusCode”:400,“error”:“Bad Request”,“message”:“Invalid Request payload JSON format”}```