zoukankan      html  css  js  c++  java
  • Python3 内置http.client,urllib.request及三方库requests发送请求对比

    HTTP,GET请求,无参
    GET http://httpbin.org/get
    
    Python3 http.client
    
    import http.client
    
    # 1. 建立HTTP连接
    conn = http.client.HTTPConnection("httpbin.org")
    # 2. 发送GET请求,制定接口路径
    conn.request("GET", '/get')
    # 3. 获取相应
    res = conn.getresponse()
    # 4. 解析相应.进行解码
    print(res.read().encode("utf-8")) # 自己解码
    Python3 urllib.request
    
    import urllib
    
    res = urllib.request.urlopen("http://httpbin.org/get")
    print(res.read().decode("utf-8"))  # 自己解码
    Python3 requests
    
    import requests
    
    res = requests.get("http://httpbin.org/get")
    print(res.text) # 自动按默认utf-8解码
    HTTPS,GET请求,带中文参数
    GET http://httpbin.org/get?name=张三&age=12
    
    Python3 http.client
    
    import http.client
    import urllib.parse
    
    conn = http.client.HTTPSConnection("httpbin.org")
    url = urllib.parse.quote("/get?name=张三&age=12", safe=':/?=&') # 进行url编码
    conn.request("GET", url)
    res = conn.getresponse()
    print(res.read().decode("utf-8")) # 自己解码
    Python3 urllib.request
    
    import urllib
    import urllib.parse
    
    url = urllib.parse.quote("https://httpbin.org/get?name=张三&age=12", safe=':/?=&') # 进行url编码
    res = urllib.request.urlopen("url")
    print(res.read().decode("utf-8"))  # 自己解码
    Python3 requests
    
    import requests
    
    res = requests.get("https://httpbin.org/get?name=张三&age=12") # 自动编码
    print(res.text) # 自动按默认utf-8解码
    Post x-www-form-urlencoded传统表单请求
    POST http://httpbin.org/post 请求数据: name=张三&age=12
    
    Python3 http.client
    
    import http.client
    import urllib.parse
    
    conn = http.client.HTTPConnection("httpbin.org")
    data = urllib.parse.urlencode({"name":"张三", "age": 12}).encode("utf-8") # 对数据进行url编码及utf-8编码
    conn.request("POST", '/post', data)
    res = conn.getresponse()
    print(res.read().decode("utf-8"))
    Python3 urllib.request
    
    import urllib
    import urllib.parse
    import urllib.request
    
    data = urllib.parse.urlencode({"name":"张三", "age": 12}).encode("utf-8") # 对数据进行url编码及utf-8编码
    req = urllib.request.Request("http://httpbin.org/post", data=data)
    res = urllib.request.urlopen(req)
    print(res.read().decode("utf-8")) 
    Python3 requests
    
    import requests
    
    data = {"name":"张三", "age": 12}
    res = requests.post("http://httpbin.org/post", data=data) # 自动编码
    print(res.text)
    Post application/json请求
    POST http://httpbin.org/post 请求数据: {"name": "张三","age": 12}
    
    Python3 http.client
    
    import http.client
    import urllib.parse
    import json
    
    conn = http.client.HTTPConnection("httpbin.org")
    data = '{"name":"张三", "age": 12}'.encode('utf-8') # 或data = json.dumps({"name":"张三", "age": 12})
    headers = {"Content-Type": "application/json"}
    conn.request("POST", '/post', data, headers)
    res = conn.getresponse()
    print(res.read().decode("utf-8"))
    Python3 urllib.request
    
    import urllib
    import urllib.parse
    import urllib.request
    import json
    
    data = '{"name":"张三", "age": 12}'.encode('utf-8') # 或data = json.dumps({"name":"张三", "age": 12})
    headers = {"Content-Type": "application/json"}
    req = urllib.request.Request("http://httpbin.org/post", data=data, headers=headers)
    res = urllib.request.urlopen(req)
    print(res.read().decode("utf-8")) 
    Python3 requests
    
    import requests
    
    data = {"name":"张三", "age": 12}
    res = requests.post("http://httpbin.org/post", json=data)
    print(res.json())  # 转为字典格式
    import requests
    import json
    
    data = {"name":"张三", "age": 12}
    headers = {"Content-Type": "application/json"}
    res = requests.post("http://httpbin.org/post", data=json.dumps(data), headers=headers)
    print(res.json())  # 转为字典格式
  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/cloudrivers/p/12120729.html
Copyright © 2011-2022 走看看