同时传入GETPOST请求

  • 错误范例:

    1
    2
    3
    4
    5
    6
    import requests

    #略....
    response_post = requests.post(url,data = data)
    response_get = requests.get(url, params = params)
    #略....

    这样会让两个请求分次发送,比如以下后端代码:

    1
    2
    3
    4
    5
    6
    $file = $_GET['file'];
    $content = $_POST['c'];
    if issert($_GET['file']){
    printf($file);
    printf($content);
    }

    如果按照第一个python脚本的请求发送方式,第一次只传达了get请求而未传递post请求,则$_content值为空。

  • 正确范例:

    1
    2
    3
    4
    import requests

    response = requests.post(url, params=params, data=data)
    #略...

    此时我们就可以同时传入两种不同请求。
    详细介绍POSTGET请求的底层逻辑,可见@Traveler2000的博客:$_GET 与 $_POST 数组相关知识

    上传二进制文件

  • 如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import requests

    base_url = "http://127.0.0.1:14564/"
    download_path = "original.wav"
    upload_path = "compare-recording"

    audio = requests.get(base_url + download_path).content

    with open("recording.wav", "wb") as f:
    f.write(audio)

    response = requests.post(base_url + upload_path, files={"audio": open("recording.wav", "rb")})

    print(response.text)
  • **contenttext**的区别:

    .content :直接访问原始字节流,适用于所有类型的数据,尤其是二进制文件。针对于视频,文本文档。

    .text :自动解码为 Unicode 字符串,适用于文本数据,但需注意编码问题。比如前端html显示的文本。

    这里我们就是用.content方法把/original.wav的二进制数据提取到audio。

    再写入要上传的recording.wav。