使用python get post数据 http https

这篇具有很好参考价值的文章主要介绍了使用python get post数据 http https。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、目的

目的比较简单,测试,使用python来提交数据是非常简洁的,修改代码也容易,除了做人工智能,本身也是一个非常好的测试端工具

1、简单的post

一个简单的示例程序,将 headers 内容置为’application/json’,为了演示,每次修改提交数据number的值,向服务器程序的8000端口提交data,for 循环提交10次。

import json
import requests
import time
headers = {'Content-Type': 'application/json'}
data = {
    'name' : 'one screen',
    'number' : 0,
    'reg' : 'test'
}
for num in range(1,10):
	data['number'] = num
	datas = json.dumps(data)
	try:
		r = requests.post("http://127.0.0.1:8000/post/data", data=datas, headers=headers)
		print(r.text)
	except requests.exceptions.ConnectionError:
		print('connectionError')	
	time.sleep(1)

使用nodejs 写一段服务端代码,简单,直接用express,进行接收数据,nodejs同样是非常翻方便简单的

var express = require('express');
var cors = require('cors');
var app = express();//创建express实例
app.use(cors());//为了解决跨域问题
var http = require('http').Server(app);
//var httpget = require('http');
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '1mb'}));  
app.use(bodyParser.urlencoded({            
  extended: true
}));
//var session = require('express-session');
/*
app.use(session({
    secret: 'secret',
    resave: true,// don't save session if unmodified
    saveUninitialized: false,// don't create session until something stored
    cookie: {
        maxAge: 1000 * 60 * 10 //过期时间设置(单位毫秒)
    }
}));
*/
app.use(express.static(__dirname));

app.post("/post/data",function(req,res){
	console.log(req.body);
	 res.send("{ret:1}");
});

 app.get("/",function(req,res){
     
     res.send("{ret:ok}");
 });

http.listen(8000, function () {
    console.log('listening on *:8000');
});

启动服务端程序,端口8000等待数据
使用python get post数据 http https,python,http协议,http,http,python,https
使用python get post数据 http https,python,http协议,http,http,python,https
客户端收到数据,打印返回,服务端收到数据打印内容,正常。

2、复杂一点的例子

修改一下headers

USER_AGENTS = [
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
]
 headers = {'Referer': 'http://127.0.0.1:8000/',
               'User-Agent': random.choice(USER_AGENTS ),
               'Accept-Language': 'zh-CN,zh;q=0.9',
               }

我们使用import http.client, urllib.parse,开始写get 和post 程序,以下为代码清单

#coding=utf-8

import http.client, urllib.parse
import http.client, urllib.parse
import random

USER_AGENTS = [
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
    "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
]

def get_demo(num,keyword):
    page = urllib.parse.urlencode({'page':num})
    params = urllib.parse.urlencode({})

    headers = {'Referer': 'http://127.0.0.1:8000/',
               'User-Agent': random.choice(USER_AGENTS ),
               'Accept-Language': 'zh-CN,zh;q=0.9',
               }
    conn = http.client.HTTPConnection("127.0.0.1",8000, timeout=10)

    conn.request("GET", "/test/"+str(num), params, headers)

    r1 = conn.getresponse()

    #print(r1.read())
    html = r1.read()
    data = html.decode('utf-8')  # This will return entire content.
    print(data)
    content = data.find(keyword)
    print(content)
    if content != -1:
        print('bingo:'+page)
    else:
        print('try {},status:{}'.format(page, r1.status))


def post_demo():
    params = urllib.parse.urlencode({'page': 1, 'name': 'qianbo'})
    headers = {"Content-type": "application/x-www-form-urlencoded",
               "Accept": "application/json"}
    #conn = http.client.HTTPSConnection("127.0.0.1",8000)
    conn = http.client.HTTPConnection("127.0.0.1",8000)
    conn.request("POST", "/post/data", params, headers)
    response = conn.getresponse()
    print(response.status, response.reason)

    if not response.closed:
        data = response.read()
        print(data, type(data.decode('utf-8')))

    conn.close()
def main():
     get_demo(1,"qianbo")
     post_demo()
     
if __name__ == '__main__':
	main()

在main函数中分别调用get 和 post程序,并且打印结果,如果需要https, 我们只要将

 conn = http.client.HTTPConnection("127.0.0.1",8000) 
 改成
 conn = http.client.HTTPSConnection("127.0.0.1",8000) 

服务端的nodejs 代码修改一下,清单如下:

var express = require('express');
var cors = require('cors');
var app = express();//创建express实例
app.use(cors());//为了解决跨域问题
var http = require('http').Server(app);
//var httpget = require('http');
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '1mb'}));  
app.use(bodyParser.urlencoded({            
  extended: true
}));

app.use(express.static(__dirname));

app.post("/post/data",function(req,res){
	 console.log(req.body);
	 res.send("{ret:1}");
});

 app.get("/",function(req,res){
     
     res.send("{ret:1,name:'qianbo'}");
 });
 app.get("/test/:page",function(req,res){
    var page = req.params.page;
    console.log("page is ",page);
    res.send("{ret:1,name:'qianbo'}");
});
http.listen(8000, function () {
    console.log('listening on *:8000');
});

其实就是增加了一个test/:page 接收,方便演示,运行后, 服务端和客户端的结果如下使用python get post数据 http https,python,http协议,http,http,python,https

python非常方便,可以节省很多时间去关心自己的业务和逻辑
说道逻辑,下面我们开始写一段有关业务的代码,以便于更好的示例

3、业务融入

下面我们开始计算业务上的医学心率数据
定义均值和标准差数据函数


def get_average(records):
    """
    平均值
    """
    return sum(records) / len(records)
def get_standard_deviation(records):
    """
    方差 反映一个数据集的离散程度
    标准差 == 均方差 反映一个数据集的离散程度
    """
    average = get_average(records)
    print("average:",average)
    test = sum([(x - average) ** 2 for x in records]) / len(records)
    return math.sqrt(test)

定义差值均方,反应心率中的变化成为

def get_rmssd(records):
    """
    差值均方得平方根,反应hrv中得变化成分
    """
    len1 = 1
    len2 = len(records)  
    sum = 0.0
    for i in range(len1,len2-1):
        sum += math.pow(records[i] - records[i-1],2)
        #sum += t*t
    return math.sqrt(sum / (len2-1))

定义post函数

def post2():
    str = json.dumps({'userid':1})
    print(str)
    headers = {"Content-type": "application/json","Accept": "text/plain"}
    conn = http.client.HTTPConnection("127.0.0.1",8000)
    conn.request('POST', "/hrv", str, headers)
    response = conn.getresponse()
    print(response.status, response.reason)
    data = response.read().decode('utf-8')
    print(data)
    conn.close()

def post(datain):
    s = requests.session()
    #print(s.headers)
    headers1 = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0',
        'Content-Type': 'application/json'
    }
  
    #json = pd.DataFrame.to_json(datain)
    json1 = json.dumps(datain) # 转换为json
    response = s.post(url1,data=json1, headers=headers1,timeout=10)
    print(response)
    print(response.content)

使用python产生发送的数据,简单写一下,模拟业务数据产生

data = {'Id': 116,'Type':3,'Device':'B00007','Data':[]}
nowtime = time.mktime(time.localtime()) - 1000*60 *6 *60  # 往前推一个小时

number = 6  #一分钟6个数据,一共60分钟 360个数据
for i in range(number): 
    #x=np.append(x,)
    data['Data'].insert(0,{'heart':random.randint(70,90), 'Time':nowtime+i*166})

d_calc = []
for i in range(10000):
    d_calc.append(60000/random.randint(70,100))


res = get_standard_deviation(d_calc)
print(res)
res = get_rmssd(d_calc)
print(res)

后面就可以使用post 进行发送数据了,比较简单,不做运行了。感谢阅读。文章来源地址https://www.toymoban.com/news/detail-560602.html

到了这里,关于使用python get post数据 http https的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用libcurl请求https的get/post

    最近有个需求,需要用c++请求下我自己的服务器,周末看了一下怎么发起http请求。 官方文档见: https://curl.se/libcurl/c/example.html 官网的demo是基于c的,我用的时候报错了。下面是我写的get/post的方法,同步执行。

    2024年02月07日
    浏览(30)
  • https请求httputil方法的使用实例get,post,put

    一、get方式 返回数据格式 这里可以用类来接收,然后获取data里面数据(如上) 二、post方式 三、put方式

    2023年04月09日
    浏览(87)
  • qt使用http get和post

    准备 使用到网络编程,需要在Pro文件中加入如下语句 get请求 widge.h widget.cpp post请求 widge.h widget.cpp post请求的数据格式 参数写在url后面 跟get一样,dataArray为空即可 http://127.0.0.1:18080/define/login?userId=1password=123 对应的后端接口 使用application/x-www-form-urlencoded form表单数据被编码为

    2024年02月08日
    浏览(49)
  • HTTP协议 9 种请求方式用途及区别(详解)-- GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT

    关于HTTP简介HTTP菜鸟教程 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。 HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 序号 方法 描述用途 1 GET 【 获取资源 】本质就是发送一个请求来取得服务

    2024年02月02日
    浏览(57)
  • java http get post 和 发送json数据请求

    浏览器请求效果       main调用  

    2024年02月16日
    浏览(50)
  • 使用QT实现http里面的get和post

    #1024程序员节|参与投稿,赢限定勋章和专属大奖# #假如你有一台服务器,你最想做哪些事?# #你被什么样的BUG困扰过一周以上?# 在http里面下面这些方法和服务器的响应代码一起用于HTTP协议中的请求和响应交互。请注意,这些函数不是由编程语言实现的,而是由HTTP协议规定

    2024年02月07日
    浏览(41)
  • 使用C#发送HTTP的Get和Post请求

    2024年02月07日
    浏览(56)
  • tomcat(跟着宝哥学java:tomcat)tomcat安装 发布项目 配置eclipse http协议详解、get请求、post请求、url详解

    在%CATALINA_HOME%webapps下创建一个文件夹:hehe 在hehe中创建子文件夹:WEB-INF和资源文件夹(html/jsp/css/imgs/js) 在WEB-INF中创建子文件夹classes::存储java源文件生成的字节码文件 在WEB-INF中创建子文件夹lib::存储项目以来的jar 在WEB-INF中创建子web项目的核心配置文件:web.xml web

    2024年02月03日
    浏览(42)
  • (一)python发送HTTP 请求的两种方式(get和post )

    注:发送请求(包括请求行、方法类型、头、体) 常见的请求方式有get、post、put、delete            格式:requests.get() (内容: url必填; params选填:url参数字典) # ~ 无参数的get请求 # ~ 有参数的get请求 # ~ 使用params的get请求        知识扩展#  requests.post() post请求分为5种,常用

    2024年02月02日
    浏览(70)
  • python3写一个http接口服务(get, post),给别人调用6

    近年来异步web服务器比较火热,例如falcon/bottle/sanic/aiohttp,今天也来玩玩sanic。 Sanic是一个支持Python 3.7+的web服务器和web框架,速度很快。它允许使用Python 3.5中添加的async/await语法,无阻塞且快。 Sanic也符合ASGI,目标是提供一种简单的方法来建立和运行一个高性能的HTTP服务器

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包