调用接口 (get,post,传cookie,入参json)

 1 # import urllib #python自带  发网络请求的一个模块 [不好用]
 2
 3 from urllib.request import urlopen
 4 from urllib.parse import urlencode
 5 import json
 6 url = ‘http://api.nnzhp.cn/api/user/stu_info‘
 7 d = {‘stu_name‘:‘矿泉水‘}
 8 req = urlopen(url,urlencode(d).encode()) #指定路径和参数
 9 #必须要先用urlencode把字典转换成字符串,然后还要继续转成二进制
10
11 print(req.read().decode())#返回的是字符串
12 result = json.loads(req.read().decode()) #转换成字典的形式
13 print(result)
14
15 #以上 不好用 仅限于 知道就ok
16
17 import requests
18
19 #get请求
20 url = ‘http://api.nnzhp.cn/api/user/stu_info‘
21 d = {‘stu_name‘:‘矿泉水‘}
22 req = requests.get(url,d)
23 print(req.json())#返回的是字典
24 print(req.text) #返回的是字符串
25
26 #post请求
27 url = ‘http://api.nnzhp.cn/api/user/login‘
28 data = {‘username‘:‘niuhanyang‘,‘passwd‘:‘aA123456‘}
29 req = requests.post(url,data)
30 print(req.json())
31
32 #传cookie的方式
33 url = ‘http://api.nnzhp.cn/api/user/gold_add‘
34 data = {‘stu_id‘: 6307,‘gold‘:99}
35 cookie = {‘niuhanyang‘:‘d0378b2def134d736ae358121cf38ff0‘}
36 req = requests.post(url,data,cookies=cookie)
37 print(req.text)
38
39 url = ‘http://api.nnzhp.cn/api/user/gold_add‘
40 data = {‘stu_id‘: 6307,‘gold‘:99}
41 cookie = {‘niuhanyang‘:‘d0378b2def134d736ae358121cf38ff0‘}
42 cookie2 = {‘cookie‘:‘niuhanyang=d0378b2def134d736ae358121cf38ff0‘}
43 # req = requests.post(url,data,cookies=cookie)
44 req = requests.post(url,data,headers=cookie2)#用headers的方法
45 print(req.text)
46
47 #用第二种headers的方式比较方便,因为cookie值有很多个的时候,用haeders直接复制就可以了
48 #但是用key->value的方式的话 要一个key一个value的写进去 比价麻烦
49
50 #入参是json的
51 data = {
52     "name": "矿泉水222",
53     "sex": "未知",
54     "age": 38,
55     "addr": "天通苑",
56     "grade": "双子座",
57     "phone": "15901211115",
58     "gold": 100
59 }
60
61 url = ‘http://api.nnzhp.cn/api/user/add_stu‘
62 req = requests.post(url,json=data)
63 print(req.text)
64
65 #上传文件
66 url = ‘http://api.nnzhp.cn/api/file/file_upload‘
67 data = {‘file‘:open(‘上传文件用‘,‘rb‘)}#b代表二进制
68 req = requests.post(url,files = data)
69 print(req.text)
70
71 #下载 图片/音乐  [网络传输都是用二进制进行传输的]
72 url = ‘http://aliuwmp3.changba.com/userdata/userwork/12107482.mp3‘
73 req = requests.get(url) #只要能在浏览器里直接打开的都是get请求
74 with open(‘aqmm.mp3‘,‘wb‘) as fw:
75     print(req.content) #content  代表返回二进制的内容
76   fw.write(req.content) #返回的文件要存起来,返回的内容写入文件
77
78 url = ‘https://aliimg.changba.com/cache/photo/18189396_640_640.jpg‘
79 req = requests.get(url) #只要能在浏览器里直接打开的都是get请求
80 with open(‘aqmm.jpg‘,‘wb‘) as fw:
81     print(req.content) #content  代表返回二进制的内容
82   fw.write(req.content) #返回的文件要存起来,返回的内容写入文件

原文地址:https://www.cnblogs.com/baiby/p/10968618.html

时间: 2024-10-11 19:50:30

调用接口 (get,post,传cookie,入参json)的相关文章

C#post调用接口并上传文件

/// <summary> /// C#调用接口上传json数据,并且带文件上传 /// </summary> /// <param name="url">接口地址</param> /// <param name="filePath">文件路径</param> /// <returns></returns> public string RequestPost(string

springMVC中 request请求数据绑定到Controller入参 过程剖析

前言:Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型.若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数.众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端.而服务端通过Request的getParameter方法取到的参数也都是字符串形式的结果.所以,需要有一个把字符串形式的参数转换成服务端真正需要的类型的转换工具(基类:PropertyEditorSupport) 注:只有

sizeof对函数入参使用不准

被调用函数内部,无法知道入参的字符数组的可用内存长度 所以函数字符指针作为入参时,一定要加一个 此指针指向的内存空间长度入参int nSize 错误的写法: 1 #include "stdafx.h" 2 #include <string.h> 3 #include <stdarg.h> 4 5 // 返回非0表达式验证不通过,不用调用子系统功能号 6 int getFilters(char * pszInput, char *pszFuncid) 7 { 8

在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误

这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多次对比官网xml格式,确认生成的xml是否有误 2.检查生成的xml是否带有空格.字段是否拼写有误,检查生成的xml是否有缺少或多字符 官方的xml: 我开发过程中生成的xml: 对比发现,我生成的xml参数比官方的参数多了CDATA等着字符,但CDATA标签是用于说明数据不被XML解析器解析的,不

Jmeter 接口测试对上接口结果二次处理作为入参 Bean Shell Processor

1.线程组设置,HTTP COOKIE ,HTTP请求默认值设置,;注:Cookie主要传递登录状态 2.设置登录 http 请求 3.登录后,访问数据接口(并对数据返回值做后置处理) 4.添加二次处理相关接口 Http请求 5.对此接口进行预处理 使用Bean Shell Processor   注:本次写的代码所涉及的参数名,为3和4中的参数名,主要将3处的结果通过5处理传递给4处当做入参使用

Mybatis调用PostgreSQL存储过程实现数组入参传递

注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 1 如上所示,参数是一个int数组,Mybatis提

c++调用python系列(1): 结构体作为入参及返回结构体

最近在打算用python作测试用例以便对游戏服务器进行功能测试以及压力测试; 因为服务器是用c++写的,采用的TCP协议,当前的架构是打算用python构造结构体,传送给c++层进行socket发送给游戏服务器,响应消息再交由python进行校验; 开始: 首先是c++调用python这一层需要打通; 幸运的是python自己有一套库提供c/c++进行调用; 下面我贴代码;用的vs2013,python用的2.7 1 // python_c++.cpp : 定义控制台应用程序的入口点. 2 //

Postman 如何处理上一个接口返回值作为下一个接口入参?

今天做接口测试,有一个接口的参数是一个校验 token,会实时更新,开发提供了一个单独返回实时 token 的接口,所以就需要在功能接口使用时调用 token 接口的返回值,作为功能接口的参数来使用. 网上搜了一下,都没有现成的使用说明,刚才研究出来了,就记录下步骤,方便后面的同学. 如果返回 token 的接口的返回值,是标准的 JSON 格式的话,就很简单的两步就行了. 1.token 接口设置全局变量 第一步就是执行 token 接口,并把接口返回值里面的 token 值,赋值给一个全局变

命令行通过入参调用jar包

命令行通过入参调用jar包 最近因为项目需要,需要实现一个功能,即定时执行服务器上的一个脚本去对数据库的数据进行业务处理,要操作的数据库有很多种,mysql.db2.oracle.sqlserver等等,但是shell目前我还不熟悉,所以就先用java去实现,打成一个jar包,通过入参即可调用不同的数据库,满足了要求.网上搜了一下,大家多使用了Apache Commons-CLI包进行命令行参数解析,但是说的都不太清楚,我在这里结合自己的实际操作进行总结,希望能够帮助到有需要的朋友. 我这里因为