簡體   English   中英

在請求中發送有效負載 python

[英]send payload in requests python

在此處輸入圖像描述

在此處輸入圖像描述

如何在請求 python 中將有效負載作為字符串傳輸?

我的代碼:

def send():
    url = "url"

    cookies = {
        "csrf_token":"",
        "refresh_token":"",
        "access_token":""
    }

    data = "id%5B%5D=52626995&id%5B%5D=52627067&result_element%5BNAME%5D=%D0%90%D1%80%D0%BA%D0%B0%D0%B4%D0%B8%D0%B9&result_element%5BMAIN_USER_ID%5D=8272126&result_element%5BTAGS%5D%5B%5D=559091&result_element%5BTAGS%5D%5B%5D=559091&result_element%5Bcfv%5D%5B664393%5D%5B%5D=%7B%22DESCRIPTION%22%3A%22WORK%22%2C%22VALUE%22%3A%2271111111111%22%7D&result_element%5Bcfv%5D%5B664393%5D%5B%5D=%7B%22DESCRIPTION%22%3A%22WORK%22%2C%22VALUE%22%3A%2271111111111%22%7D&result_element%5Bcfv%5D%5B1262415%5D=12&result_element%5Bcfv%5D%5B1256527%5D=3&result_element%5Bcfv%5D%5B1272573%5D=817683&result_element%5BLEADS%5D%5B%5D=36375665&result_element%5BID%5D=52627067"
    resp = requests.post(url=url, cookies=cookies, data=data)

    return resp

但我得到了錯誤,因為數據必須是 dict

查看請求文檔

數據——(可選)字典、元組列表、字節或類似文件的 object 在請求正文中發送。

所以你唯一需要的就是將你的字符串編碼為字節:

resp = requests.post(url=url, cookies=cookies, data=data.encode())

更詳細的解釋是 Python 3 中的字符串是你看到的字符的抽象表示。 您可以在 Python 中使用捷克字母“Ř”,無論在計算機 memory 中使用什么編碼將字符表示為字節。

如果您想獲取字節,則必須指定將字符轉換為代表它們的字節的編碼。 對於捷克語,最合適的是 UTF-8 (幾乎任何東西)或 Windows-1250 aka CP-1250:

>>> x = "Ř" 
>>> x
'Ř'
>>> x.encode("utf-8")
b'\xc5\x98'
>>> x.encode("cp1250")
b'\xd8'

但是,要通過 Internet 發送它,您必須指定要使用的編碼,而沒有編碼的純str.encode使用 UTF-8,這可能是最佳選擇:

>>> x.encode()
b'\xc5\x98'

他們是對的。 它必須是一本字典。 您在此處擁有的數據也是一個編碼字典。 使用( https://www.url-encode-decode.com/ )您可以更好地理解您的數據。

id[]=52626995
id[]=52627067
result_element[NAME]=Аркадий
result_element[MAIN_USER_ID]=8272126
result_element[TAGS][]=559091
result_element[TAGS][]=559091
result_element[cfv][664393][]={"DESCRIPTION":"WORK","VALUE":"71111111111"}
result_element[cfv][664393][]={"DESCRIPTION":"WORK","VALUE":"71111111111"}
result_element[cfv][1262415]=12
result_element[cfv][1256527]=3
result_element[cfv][1272573]=817683
result_element[LEADS][]=36375665
result_element[ID]=52627067

作為普通的 python 字典,如下

{
  "id": [52626995, 52627067],
  "result_element": {
    "NAME": "Аркадий",
    "MAIN_USER_ID": 8272126,
    "TAGS": [559091, 559091],
    "cfv": {
      664393: [
        {"DESCRIPTION":"WORK","VALUE":"71111111111"}, 
        {"DESCRIPTION":"WORK","VALUE":"71111111111"}],
      1262415: 12,
      1256527: 3,
      1272573: 817683,
    },
    "LEADS": [36375665],
    "ID": 52627067
  }
}

因此,如果您有以下代碼,它應該可以工作:

url = "url"

    cookies = {
        "csrf_token":"",
        "refresh_token":"",
        "access_token":""
    }

    data = {"id": [52626995, 52627067],
            "result_element": {
              "NAME": "Аркадий",
              "MAIN_USER_ID": 8272126,
              "TAGS": [559091, 559091],
              "cfv": {
                664393: [
                  {"DESCRIPTION":"WORK","VALUE":"71111111111"}, 
                  {"DESCRIPTION":"WORK","VALUE":"71111111111"}],
                1262415: 12,
                1256527: 3,
                1272573: 817683,
              },
              "LEADS": [36375665],
              "ID": 52627067
            }
          }
    resp = requests.post(url=url, cookies=cookies, data=data)

    return resp

我是手動完成的。 首先,檢查我是否正確解析了您的字符串。

暫無
暫無

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

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