Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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
PythonAPI请求_Python_Google Api Python Client - Fatal编程技术网

PythonAPI请求

PythonAPI请求,python,google-api-python-client,Python,Google Api Python Client,我需要将值传递给有效负载字符串- 有效载荷=“{”currencyFrom:“SGD”,“currencyTo:“EUR”,“类型”:“出售”,“金额”:“{”金额:50000,“规模”:2}” 需要使用上面创建的3个列表将值传递到有效负载`您能试着解释一下您想要的是什么吗 我怀疑您的意思是,您希望在每次调用函数发布数据时动态更新文本有效负载中的值 我通常会创建一个占位符字符串,然后在运行时替换占位符值来更新它 Source=["SGD"] Destination=[&quo

我需要将值传递给有效负载字符串- 有效载荷=“{”currencyFrom:“SGD”,“currencyTo:“EUR”,“类型”:“出售”,“金额”:“{”金额:50000,“规模”:2}”
需要使用上面创建的3个列表将值传递到有效负载`

您能试着解释一下您想要的是什么吗

我怀疑您的意思是,您希望在每次调用函数发布数据时动态更新文本有效负载中的值

我通常会创建一个占位符字符串,然后在运行时替换占位符值来更新它

Source=["SGD"]
Destination=["USD"]
Amount=[5000]

```import requests
   url = "https://api.currencyfair.com/comparisonQuotes"
   payload = "{\"currencyFrom\":\"SGD\",\"currencyTo\":\"EUR\",\"type\":\"SELL\",\"amountInfo\": 
  {\"amount\":50000,\"scale\":2}}"
  headers = {
    'user-agent': "vscode-restclient",
    'content-type': "application/json",
    'accept': "application/json"
    }
   response = requests.request("POST", url, data=payload, headers=headers)
   print(response.text)
看看您试图与之交互的API,这是它所期望的示例:

payload = "{\"currencyFrom\":\"@currencyFrom\",\"currencyTo\":\"@currencyTo\",\"type\":\"SELL\",\"amountInfo\": {\"amount\":@amountInfo,\"scale\":2}}"

currencyFrom = 'USD'
currencyTo = 'EUR'
amountInfo = 50000

payload = payload.replace('@currencyFrom', currencyFrom).replace('@currencyTo', currencyTo).replace('@amountInfo', amountInfo)
这是一个遵循特定格式的JSON对象,如果您尝试在“currencyFrom”、“currencyTo”字段等中传递一个列表而不是字符串,那么您将得到一个错误

要获取多个值作为响应,只需对API执行多个请求,例如:

{"currencyFrom": "EUR",
"currencyTo": "GBP",
"type": "SELL",
"amountInfo": {"amount": 100},
"ignoreFee": false}
希望这有意义


编辑:根据您的评论更新代码。

非常感谢您的回复:)我的意思是,在源、目标、金额变量中,我将有多个值,我需要将这些值传递给有效负载-有效负载中突出显示的3个值将通过3个列表变量传递。比如,我在目标中有两个值=[“USD”,“AUD”]我想把它们传递给payload,而不是“EUR”,我已经更新了上面的代码,以更好地说明如何获得想要的结果。我还鼓励您快速阅读API的工作原理以及如何传递JSON对象。您不需要字符串格式的有效负载,将其转换为JSON对象将使一切变得更简单,代码更干净!谢谢,当我运行上面的代码时,我得到了TypeError:replace()参数2必须是str,而不是list。这个错误是在payload-payload=payload.replace('@currencyFrom',currencyFrom.replace('@currencyTo',currencyTo.replace('@amountInfo',amountInfo.replace)上抛出的。请提供帮助
payload = "{\"currencyFrom\":\"@currencyFrom\",\"currencyTo\":\"@currencyTo\",\"type\":\"SELL\",\"amountInfo\": {\"amount\":@amountInfo,\"scale\":2}}"

currencyFrom = ['USD', 'GBP']
currencyTo = ['EUR', 'CHF']
amountInfo = 50000

payload = payload.replace('@currencyFrom', currencyFrom).replace('@currencyTo', currencyTo).replace('@amountInfo', amountInfo)
for currFrom in currencyFrom:
    for currTo in currencyTo:
        for amount in amountInfo:
            payload = payload.replace('@currencyFrom', currFrom ).replace('@currencyTo', currTo ).replace('@amountInfo', amount )
            response = requests.request("POST", url, data=payload, headers=headers)