zoukankan      html  css  js  c++  java
  • python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况

    json和dict

    python中的dict类型要转换为json格式的数据需要用到json库:

    import json   
    
    <json> = json.dumps(<dict>) 
    
    <dict> = json.loads(<json>) 


    需要注意的是python中并没有json类型这一说法,通过json.dumps(<dict>)转换的字典对象,最后得到的是一个字符串对象,也就是说,在python中json格式的数据实际上就是一个字符串

    >>> j = json.dumps(<dict>)
    
    >>> type(j) <class 'str'>

    虽说json格式的数据在python中是以字符串的类型存在的,但是通过str(<dict>)工厂函数所得到的结果同json.dumps(<dict>)方法所得到的结果是不相同的

    >>> d = {'a': 1, 'b': 2}
    >>> d_d = {"a": 1, "b": 2}
    >>> string = str(d)
    >>> string_d = str(d_d)
    >>> js = json.dumps(d)
    >>> js_d = json.dumps(d_d)
    >>> string == string_d
    True
    >>> js = js_d
    True
    >>> string == js
    False
    >>> string
    "{'a': 1, 'b': 2}"
    >>> js
    '{"a": 1, "b": 2}'

    可以看出来string和js的区别在于引号。对于可以作为json.loads(<str>)参数对象的字符串,除了要满足字典类型的格式外,所有的字符串对象必须是双引号

    requests.post()

    在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。

    常见的form表单可以直接使用data参数进行报文提交,而data的对象则是python中的字典类型;

    而在最新爬虫的过程中遇到了一种payload报文,是一种json格式的报文,因此传入的报文对象也应该是格式的;

    这里有两种方法进行报文提交:

    import requests 
    import json   
    
    url = "http://example.com" 
    data = {'a': 1,'b': 2} 
    # 1 data = json.dumps(datas)
    headers = {'Content-Type': 'application/json'}
    response = requests.post(url, data=data, headers=headers)
    # 2-json参数会自动将字典类型的对象转换为json格式 
    requests.post(url, json=data)

    其它

    在requests.get()方法中可以使用params参数来构建url 有时候请求得到的结果可能呈现乱码的状态,可以通过resp.encoding属性查看网页编码方式,同时可以在获取resp.text之前对resp.encoding='utf-8'赋值,这样再次获取的resp.text则会使用我们要求的编码方式。

  • 相关阅读:
    Autotools使用流程【转】
    Linux下GCC生成和使用静态库和动态库【转】
    Linux驱动模块的Makefile分析【转】
    GNU C 中零长度的数组【转】
    Linux设备驱动中的IO模型---阻塞和非阻塞IO【转】
    程序(进程)内存分布解析【转】
    【转】用户空间使用i2c_dev--不错
    开源课堂网址
    【转】用Device tree overlay掌控Beaglebone Black的硬件资源
    【转】Device Tree(三):代码分析
  • 原文地址:https://www.cnblogs.com/xyao1/p/10811484.html
Copyright © 2011-2022 走看看