一、接口信息
POST http://172.16.11.221:8080/EasyBuy/admin/product?action=addProduct HTTP/1.1 Host: 172.16.11.221:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: multipart/form-data; boundary=---------------------------172115127626670594683299562332 Content-Length: 1210 Origin: http://172.16.11.221:8080 DNT: 1 Connection: keep-alive Referer: http://172.16.11.221:8080/EasyBuy/admin/product?action=toAddProduct Cookie: JSESSIONID=17D011BBCF07CCE19FEF9C0584A6EBAB Upgrade-Insecure-Requests: 1
提交的multipart/form-data數據:
二、實現方式
2.1.通過data參數和files參數發送請求
import requests #使用Session方法,持久保持會話 session = requests.Session() #打開首頁請求 session.get("http://172.16.11.221:8080/EasyBuy/Home?action=index") #用戶登錄請求 url = "http://172.16.11.221:8080/EasyBuy/Login" headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'charset': 'UTF-8' } payload = { 'loginName': 'admin', 'password': '123456', 'action': 'login' } session.post(url, data=payload, headers=headers) #上傳商品信息文件 url = 'http://172.16.11.221:8080/EasyBuy/admin/product?action=addProduct' #構成字典,鍵值對方式傳參 payload = { "categoryLevel1Id":'548', "categoryLevel2Id":'654', "categoryLevel3Id":'655', "id": "", "name": '護手霜', "price": '123', "stock": '100000', "description": 'BB護手霜' } #上傳文件單獨構造以一下形式,“photo”上傳文件的鍵名,'hello.jpg'上傳到服務器的文件名, open('D:/hello.jpg','rb')打開文件對象注意要使用二進制,'image/jpeg'Content-Type類型 file = { 'photo': ('hello.jpg', open('D:/hello.jpg','rb'),'image/jpeg') } session.post(url, data=payload, files=file)
2.2.僅通過files參數模擬文件發送請求
url = 'http://172.16.11.221:8080/EasyBuy/admin/product?action=addProduct' # 構造字典,鍵值對方式傳參,類型不是文件的構造鍵值對,鍵值為一個元組形式,元組第0位為None,第1位為鍵值. file = { "categoryLevel1Id": (None, '548'), "categoryLevel2Id": (None, '654'), "categoryLevel3Id": (None, '655'), "id": (None, ""), "name": (None, '護手霜'), "price": (None, '1279'), "stock": (None, '100000'), "description": (None, '效果好,各方面比較好'), 'photo': ('hello.jpg', open('D:/hello.jpg', 'rb'), 'image/jpeg') } session.post(url,data=payload, files=file)