python http post json
直接上代码吧
## python3
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 import json, gzip 5 from urllib import request, parse 6 7 def REQ(url, params=None, headers=None): 8 headers = headers or {} 9 if params: # dict 10 params = json.dumps(params) if headers['Content-Type'] and 'application/json' in headers['Content-Type'] else parse.urlencode(params) 11 params = params.encode('utf-8') 12 13 # 当 params 不为空,method 为 POST 14 req = request.Request(url, params, headers) 15 with request.urlopen(req, timeout=60) as page: 16 res = page.read() 17 18 if page.getheader('Content-Encoding') == 'gzip': 19 res = gzip.decompress(res).decode('utf-8') 20 else: 21 res = res.decode('utf-8') 22 23 if 'application/json' in page.getheader('Content-Type'): 24 res = json.loads(res) 25 26 return res 27 28 url = 'http://localhost/xxx' 29 d = {'a': 'aa', 'b': 'bb'} 30 headers = { 'Content-Type': 'application/json; charset=utf-8' } 31 32 res = REQ(url, d, headers) 33 print(res)
##python2:
1 #coding=utf-8 2 import os 3 import urllib 4 import urllib2 5 import re 6 import cookielib 7 import json 8 9 10 headers = {} 11 headers['Content-Type'] = 'application/json; charset=utf-8' 12 13 values = {} 14 values["uuid"] = 'XXXXX' 15 values['uid'] = '86945' 16 port = '3002' 17 18 route = 'login' 19 20 21 post_data = urllib.urlencode(values) 22 j_data = json.dumps(values) 23 print j_data 24 25 def jsonPost(url): 26 req = urllib2.Request(url, j_data, headers) 27 page = urllib2.urlopen(req) 28 res = page.read() 29 page.close() 30 return res 31 32 33 res = jsonPost("http://127.0.0.1:%s/%s" % (port, route)) 34 print res
dic = {'a': 'aa', 'b': 'bb'}
urllib.urlencode(dic) // dictionary 转成 url 中的参数: a=aa&b=bb
json.dumps(dic) // dictionary 转成 json: {"a":"aa", "b":"bb"}
+V why_null 请备注:from博客园
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通