1. 程式人生 > >Python學習記錄-----批量傳送post請求

Python學習記錄-----批量傳送post請求

昨天學了一天的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-,","
[email protected]
#$%^&*()_;:'-\"<>?/|\\-,"," "}; String[] contents = {"-中文測試-,","-English Test-,","[email protected]#$%,"," "}; 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-,","
[email protected]
#$%,","     "] 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請求

昨天學了一天的Python(我的生產語言是java,也可以寫一些shell指令碼,算有一點點基礎),今天有一個應用場景,就正好練手了。 這個功能之前再java裡寫過,比較粗糙,原來是在我本機跑的,今天老大要求要隨時保持請求,就用Python改寫了下,省的又把一個有跟多雜項的

Python讀取Excls檔案傳送post請求

import xlrd import json import requests path=r'C:\Users\wconcept\Desktop\path'; #開啟的Excls data=xlrd.open_workbook(path) nums=len(data.she

Java學習--HttpURLConnection傳送post請求

import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; /**

Python-for迴圈迭代讀取多個引數,傳送POST請求

本來想用java來寫批量新增裝置到IOT平臺的,但是,想嘗試用Python指令碼寫一下,就請教一下朋友,使用for k,v in 來讀取多個引數,實現用POST請求 批量新增的功能 #!/usr/

python使用scrapy傳送post請求的坑

使用 requests 傳送 post 請求 先來看看使用requests來發送post請求是多少好用,傳送請求 Requests 簡便的 API 意味著所有 HTTP 請求型別都是顯而易見的。 例如,你可以這樣傳送一個 HTTP POST 請求: >

介面自動化之requests學習(三)--傳送post請求

想要用requests方法呼叫post請求,首先我們要有一個post介面,我們選擇人人網登入介面來練習 1.開啟人人網的登入頁面,獲取登入的url及傳送的引數 2.獲取到登入介面url及引數後,編寫程式碼 #!usr/bin/env python #-*- codi

python傳送post請求上傳檔案,無法解析上傳的檔案

前言 近日,在做介面測試時遇到一個奇葩的問題。 使用post請求直接通過介面上傳檔案,無法識別檔案。 遇到的問題 以下是抓包得到的資訊: 以上請求是通過Postman直接傳送請求的。 在這裡可以看到訊息頭裡包含:Access-Token和Content-Type 因此在在使用python直接

Python 使用requests傳送POST請求

一個http請求包括三個部分,為別為請求行,請求報頭,訊息主體,類似以下這樣: 請求行  請求報頭  訊息主體 HTTP協議規定post提交的資料必須放在訊息主體中,但是協議並沒有規定必須使用什麼編碼方式。服務端通過是根據請求頭中的Content-Type欄位來獲

Python程式碼傳送post請求介面測試

參考程式碼  # coding:utf-8 import requests url = "https://passport.cnblogs.com/user/signin" # 介面地址 # 訊息頭資料 headers = { 'Connecti

Python中request傳送post請求傳遞json引數的問題

昨天遇到了一個奇怪的問題,在Python中需要傳遞dict引數,利用json.dumps將dict轉為json格式用post方法發起請求:params = {"score":{"gt":"80", "lt":"90"}} request.post(url, json.dump

Python構造傳送POST請求

Python2.7 程式碼示例如下: def post(): url = "http://127.0.0.1:8000/login.jsp" postDict = {

Python 中request以json形式傳送post請求

一個http請求包括三個部分,為別為請求行,請求報頭,訊息主體,類似以下這樣: 請求行 請求報頭 訊息主體 以json串提交資料,編碼格式:application/json 舉例如下: 可以將一json串傳給requests.post()的data引數 #

Python學習記錄-socket編程

pythonPython學習記錄-socket編程學習 python socketPython學習記錄-socket編程1. OSI七層模型詳解2. Python socket3. socket()函數4. TCP socket通信流程5. Python Internet 模塊1. OSI七層模型詳解以上圖見

Python學習記錄day5

process its 定義 return 不能 自己 多層裝飾器 環比 方式 1.多層裝飾器 多層裝飾器的原理是,裝飾器裝飾函數後,其實也是一個函數,這樣又可以被裝飾器裝飾。 編譯是從下至上進行的,執行時是從上至下進行。 #!/usr/bin/env python #

python學習記錄

pri data open 對稱 位置 sleep col pytho -- 一、集合: list_1 = [1,4,5,7,3,6,7,9] list_1 = set(list_1) list_2 = set([2,6,0,66,22,8,4]) #交集 list_

Python接口自動化基礎---post請求

.post openapi 在北京 request pen user class pytho http 常見的post提交數據類型有以下兩種: 第一種:application/json ,這是常見的json格式,格式如下:{"input1":"xxx","input2":"

Python學習記錄

安裝 utm tro ont edi exploit blank char str 下載安裝 windows系統下Python環境的搭建 開發工具 PyCharm 一次獲得所有PYTHON工具 Python學習記錄

python 學習記錄

python 每天學習筆記#!/usr/bin/pytholn# -*- coding: UTF-8 -*-import mathimport sysdef print_13(): #for i in range(10): man_age = int(raw_input(‘enter input age:\

第一天Python學習記錄

clas 也有 python 開始 眼界 大數 log 設備 朋友 之前在學習大數據的時候接觸過Python基礎,今天開始系統學習Python開發知識了,開發基礎,主要是對課程的介紹,Alex侃侃而談,使我眼界大開,特別是看到美國的一些自動化設備的使用率比國內要普及很多,雖

第五天Python學習記錄

學習記錄 pre eve 記錄 語句 pytho spa 結束 就是 while循環 #第50次不打印,第60-80次打印對應值的平方 1 count = 0 2 3 while count <= 100: 4 if count == 50: