【问题标题】:how to send post request in python for this curl command如何在 python 中为此 curl 命令发送 post 请求
【发布时间】:2022-01-14 02:41:17
【问题描述】:

如何使用此 curl 命令在 python 中发送 POST 请求

curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X POST "https://api-cloud.browserstack.com/app-automate/upload" \
-F "url=https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk"

我尝试了以下代码:

resp=requests.post(URL,headers= 
    {'YOUR_USERNAME:YOUR_ACCESS_KEY'},
  data=https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk") 

它不工作。

我不知道如何在 POST 请求中发送此行 "url=https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk"。 “url=https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk”这是apk的公共网址。 并希望在此网址上传“https://api-cloud.browserstack.com/app-automate/upload”

在应用下面的答案后,我找到了解决方案 谢谢大家。 答案是——

导入 urllib.request

#file 将下载到当前工作目录,名称为 app-release.apk urllib.request.urlretrieve('https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk', 'app-release.apk')

test_file = open("app-release.apk", "rb")

URL = 'https://api-cloud.browserstack.com/app-automate/upload' response = requests.post(URL, files={'file': test_file, }, auth=('YOUR_USERNAME', 'YOUR_ACCESS_KEY'))

【问题讨论】:

标签: python curl browserstack


【解决方案1】:

使用requests

你可以这样做:

import requests

files = { 'file': ('url=https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk', 
open('url=https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk', 
'rb')),}
URL = 'https://api-cloud.browserstack.com/app-automate/upload'
response = requests.post(URL, files=files, auth=('YOUR_USERNAME', 'YOUR_ACCESS_KEY'))
print (response.text)

现在应该可以正常工作了。

【讨论】:

  • 它给出错误- TypeError: memoryview: a bytes-like object is required, not 'str'
  • @UddhavRaut,再次测试,如果您的问题解决了,请告诉我
  • 对不起,但给出错误 - FileNotFoundError: [Errno 2] No such file or directory:
  • 尝试输入apk文件的好路径
  • 当我尝试使用 curl 时,它工作正常。
【解决方案2】:

试试这个

import requests

files = {
    'url': (None, 'https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk'),
}

response = requests.post('https://api-cloud.browserstack.com/app-automate/upload', files=files, auth=('YOUR_USERNAME', 'YOUR_ACCESS_KEY'))

或者这个

import requests

files = {
    'url': 'https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk'
}

response = requests.post('https://api-cloud.browserstack.com/app-automate/upload', files=files, auth=('YOUR_USERNAME', 'YOUR_ACCESS_KEY'))
'''

【讨论】:

  • 不工作 - TypeError: 字节类型的对象不是 JSON 可序列化的
  • 现在试试,应该直接发送,不用下载到本地机器上
  • 不工作- {"error":"[BROWSERSTACK_APP_UPLOAD_JSON_INVALID] API 请求无效:请在应用上传 API 请求中为数据密钥传递有效的 JSON。请参阅我们的 REST API 文档 - browserstack.com/app -automate/rest-api?framework=appium"}
【解决方案3】:

解决方案的答案,对我有用的是

import urllib.request

#file will download in current working directory with name app-release.apk 

urllib.request.urlretrieve('https://www.browserstack.com/app-automate/sample-apps/android/WikipediaSample.apk', 'app-release.apk')

test_file = open("app-release.apk", "rb")

URL = 'https://api-cloud.browserstack.com/app-automate/upload' response = requests.post(URL, files={'file': test_file, }, auth=('YOUR_USERNAME', 'YOUR_ACCESS_KEY'))

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 2022-08-22
    • 2018-05-19
    相关资源
    最近更新 更多