簡體   English   中英

如何使用有效負載請求在 python 中創建發布請求?

[英]How to create a post request in python with payload request?

我想在 python 中創建一個如下圖所示的發布請求,該請求返回我在瀏覽器中收到的數據:

在此處輸入圖像描述

cookie如下: 在此處輸入圖像描述 為此,我編寫了以下代碼:

import requests

url = "https://flight-api-v1.utravs.com/Flight/statistic/FlightPriceStatistics"
data = {
    "minimumPriceStatisticRequest": {
        "$id": 1,
        "availabilityRequest": {
            "$id": 2,
            "segments": {
                "$id": 3,
                "$values": [
                    {
                        "$id": 4,
                        "destination": "KIH-Kish-all",
                        "origin": "THR-Tehran-all",
                        "departureDateTime": "2021-12-02T00:00:00.000Z",
                        "uniqueIndex": 0
                    }
                ]
            },
            "passengers": {
                "$id": 5,
                "$values": [
                    {
                        "$id": 6,
                        "type": 1,
                        "quantity": 1,
                        "optionalServices": {
                            "$id": 7,
                            "$values": []
                        }
                    }
                ]
            },
            "travelDetails": {
                "$id": 8,
                "cabinType": 1,
                "airTripType": 1,
                "stopQuantityType": 3,
                "pricingSourceType": 3
            },
            "availabilityType": 0
        },
        "minRange": 10,
        "maxRange": 10
    }
}
x = requests.post(url, data=data)
print(x.text)

但我沒有從服務器收到正確的信息。

  1. 您需要發布application/json請求,因此請使用requests.post()json參數

  2. 您正在與之通信的 api 似乎需要某種身份驗證,嘗試使用cookies參數移植 session cookie

     data = {...} cookies = {"_session": "1ac[..]"} response = requests.post(url, json=data, cookies=cookies)

這會給你你想要的:

import requests

url = "https://flight-api-v1.utravs.com/Flight/statistic/FlightPriceStatistics"
data = {
    "minimumPriceStatisticRequest": {
        "$id": 1,
        "availabilityRequest": {
            "$id": 2,
            "segments": {
                "$id": 3,
                "$values": [
                    {
                        "$id": 4,
                        "destination": "KIH-Kish-all",
                        "origin": "THR-Tehran-all",
                        "departureDateTime": "2021-12-02T00:00:00.000Z",
                        "uniqueIndex": 0
                    }
                ]
            },
            "passengers": {
                "$id": 5,
                "$values": [
                    {
                        "$id": 6,
                        "type": 1,
                        "quantity": 1,
                        "optionalServices": {
                            "$id": 7,
                            "$values": []
                        }
                    }
                ]
            },
            "travelDetails": {
                "$id": 8,
                "cabinType": 1,
                "airTripType": 1,
                "stopQuantityType": 3,
                "pricingSourceType": 3
            },
            "availabilityType": 0
        },
        "minRange": 10,
        "maxRange": 10
    }
}
with requests.Session() as session:
    cookies = {"_session": "1acda9e8-3051-47bb-bddf-9d68553ebbee"}
    headers = {"Accept": "application/json"}
    (x := session.post(url, json=data, cookies=cookies, headers=headers)).raise_for_status()
    print(x.json()['Result'])

注意:此答案中使用的 session cookie 可能會過期。 所以,雖然它現在有效,但它可能並不總是有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM