Python学习记录-----批量发送post请求

原创 2017年05月11日 20:03:13

昨天学了一天的Python(我的生产语言是java,也可以写一些shell脚本,算有一点点基础),今天有一个应用场景,就正好练手了。

这个功能之前再java里写过,比较粗糙,原来是在我本机跑的,今天老大要求要随时保持请求,就用Python改写了下,省的又把一个有跟多杂项的jar包传到服务器,省空间又不乱,而且好读。


先附上java代码:


package xxxxxx.base;

import java.util.Random;

import org.apache.commons.lang3.StringUtils;

import haojianxiang.util.HttpRequest;

public class CreateFeedbackData {

	public static void main(String[] args) {
		while (true) {
			try {
				Random r = new Random();
				int sleep = r.nextInt(1200000) + 600000;
				Thread.sleep(sleep);
				post();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void post(){
		String url = "http://111.111.111.111:8080/xxxx/post";
		
		int[] types = {1, 2, 3, 4};
		int index = (int) (Math.random() * types.length);
		int type = types[index];
		
//		String[] contents = {"-中文测试-,","-English Test-,","~!@#$%^&*()_;:'-\"<>?/|\\-,","          "};
		String[] contents = {"-中文测试-,","-English Test-,","~!@#$%,","          "};
		
		StringBuffer content = new StringBuffer();
		content.append("haojianxiang test:");
		for (int i = 0; i < 10; i++) {
			int idx = (int) (Math.random() * contents.length);
			content.append(contents[idx]);
		}
		
		String[] imgs = {"/Upload/appUpload/58c7b315cb39f.jpg",
				"/Upload/appUploa/58cb467a69873.jpg",
				"/Upload/appUpload/58afff0e99432.png",
				"/Upload/appUpload/58b545539eb80.jpg",
				"/Upload/appUpload/58b55d7c9e281.JPG",
		};
		StringBuffer img = new StringBuffer();
		
		for (int i = 0; i < (int) (Math.random() * 4); i++) {
			int lucky = (int) (Math.random() * 2);
			if (lucky == 1) {
				int idx = (int) (Math.random() * imgs.length);
				img.append(imgs[idx]);
				img.append(",");
			}
		}
		String imgStr = "";
		if (StringUtils.isNotBlank(img)) {
			imgStr = img.substring(0, img.length()-1);
		}
		String param = "{\"req\":{\"userId\":xxxxxx}," +
				"\"data\":{"\"fbType\":" + type + ",\"fbContent\":\""+content.toString()+
				"\",\"fbPic\":\""+imgStr+"\"}}";
		String rst = HttpRequest.sendPost(url, param);
		System.out.println("TIME--"+ System.currentTimeMillis() + " result:" + rst);
	}

}



(代码里的参数地址等我已做了隐藏,json格式可能不准确了,无所谓)


接下来上Python代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import urllib
import urllib.request
import time

def postFeedBack():
    url = "http://111.111.111.111:8080/xxxx/post"

    type = int(random.uniform(1,5))
    contents = ["-中文测试-,","-English Test-,","~!@#$%,","     "]
    content = "haojianxiang test:"
    for i in range(0,10):
        content += random.choice(contents)

    img = ""
    imgs = ["/Upload/58c7b315cb39f.jpg",
            "/Upload/58cb467a69873.jpg",
            "/Upload/58afff0e99432.png",
            "/Upload/58b545539eb80.jpg",
            "/Upload/58b55d7c9e281.JPG"]
    for i in range(0,3):
        lucky = int(random.uniform(0,2))
        if lucky == 1:
            img += random.choice(imgs)
            img += ","
    img = img[:-1]
    data = "{\"req\":{\"userId\": xxx},"
    data += "\"data\":{
    data += "\"fbType\":"
    data += str(type)
    data += ",\"fbContent\":\""
    data += content
    data += "\",\"fbPic\":\""
    data += img
    data += "\"}}"

    pdata = bytes(data,encoding="utf-8")
    f = urllib.request.urlopen(url,pdata)

    result = f.read()
    result = result.decode('UTF-8')
    print(result)

if __name__ == "__main__":
    while True:
        st = int(random.uniform(600,1800))
        print("sleep:",st)
        time.sleep(st)
        postFeedBack()

Python的写法确实很简洁高效(java代码里post的逻辑,我还是调用了自己的一个工具类,实际代码要更多),今后打算把Python作为优先脚本语言,处理简单问题很快。


python 实现批量post json数据测试

服务器之前经常出现发消息就会宕机,今天修改了部分之后,就用python实现了一个批量post数据测试。 直接上代码。url 是测试版,你看到这份代码的时候,应该已经不能用了,童鞋需要自己有可以测试的u...
  • sjl_leaf
  • sjl_leaf
  • 2015年09月23日 22:53
  • 6270

python http请求的几种方式的实现

python http请求的几种方式的实现      直接上代码:      import os import sys import json import urllib2 class CH...
  • chenglinhust
  • chenglinhust
  • 2016年08月11日 10:12
  • 960

Linux Shell脚本编程--curl命令详解

用途说明 curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类...
  • xifeijian
  • xifeijian
  • 2013年08月25日 20:15
  • 875120

python使用post方式提交数据

#!/usr/bin/python # -*- coding: UTF-8 -*- import urllib,cookielib; import urllib2 #设置要请求的头,让服务器不会以为...
  • wickedvalley
  • wickedvalley
  • 2016年07月22日 13:58
  • 4987

python批量插入数据库数据

#coding=utf8 from pymysql import connect,cursors from pymysql.err import OperationalError import sy...
  • qq_35958094
  • qq_35958094
  • 2017年11月06日 22:29
  • 756

Python 使用requests发送POST请求

一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行  请求报头  消息主体 HTTP协议规定post提交的数据必须放在消息主体中,但是协议并...
  • junli_chen
  • junli_chen
  • 2016年12月15日 15:10
  • 40713

简单的python http接口自动化脚本

今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和...
  • xiaosongbk
  • xiaosongbk
  • 2016年10月19日 19:38
  • 6416

python使用post方式发送json参数

在使用微盟的接口时,遇到这样的规定: 1、正向接口以’Content-Type: application/json’ 格式推送至微盟平台2、所有正向接口的调用均以post方式提交,并且post中的参...
  • u012374229
  • u012374229
  • 2015年07月03日 17:08
  • 26648

ajax post 提交大量数据

在做个彩票项目的时候,有个业务是需要一个大型的数组通过ajax把一个大型数组传到后台,网上搜了一大轮,发觉说的都是说这种方式使用ajax不符合业务要求。 或者问非所答,很少有亲自测试的。这里做了个1...
  • dexing07
  • dexing07
  • 2017年07月21日 01:32
  • 2008

Python之使用Python发送HTTP请求

参考代码:          http://www.cnblogs.com/LJ-fish/archive/2010/08/09/1796078.html
  • c602273091
  • c602273091
  • 2014年09月23日 06:58
  • 939
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python学习记录-----批量发送post请求
举报原因:
原因补充:

(最多只允许输入30个字)