python利用urllib和urllib2访问http的GET/POST详解


Posted in Python onSeptember 27, 2017

前言

本文主要给大家介绍了关于python如何访问http的GET/POST的相关内容,使用urllib和urllib2,可以轻松实现对http的访问,下面话不多说了,来一起看看详细的介绍吧。

示例详解

以下给个例子,实现对http://127.0.0.1/cgi/test的GET与POST

使用的是平常意义上的query string

POST接受json

其中,

urllib2的Request方法如果只带一个参数是GET方法,但如果带两个参数,则为http的POST方法,第二个参数为POST的内容。

#!/usr/bin/env python
 
import urllib
import urllib2
import json
 
url_base = "http://127.0.0.1/cgi/test"
 
#GET
try:
 query = {'test':'yes','name':'colin'}
 query_string = urllib.urlencode(query)
 url = url_base+"?"+query_string
 print "GET", url<br data-filtered="filtered"> print "web output:"
 print urllib2.urlopen(urllib2.Request(url)).read()
except Exception as err:
 print err
 
#post
try:
 url = url_base
 print "POST", url
 a = {'k1':123, 'k2': '456', 'k3':'test'}
 json_s = json.dumps(a)<br data-filtered="filtered"> print "POST input:"
 print json_s<br data-filtered="filtered"> print "web output:"
 print urllib2.urlopen(urllib2.Request(url, json_s)).read()
except Exception as err:
 print err

test用bash编写,如下所示,其中jq是处理json的命令,需要下载一下,bash/sed/awk应该都是系统自带

#!/bin/bash
echo -e 'Content-type:text/plain\r'
echo -e '\r'
 
if [ X"$REQUEST_METHOD" = X"POST" ];then
  jq . | sed -nr '/:/!d; s/^([ \t]*"[^"]+"[ \t]*):/\1=/;s/,[ \t]*$//;s/"//g;p'
else
  echo ${QUERY_STRING} | awk 'BEGIN{RS="&"}1'
fi

随便用什么webserver都可以,只要支持CGI,我这里用是一个很轻量的webserver——boa,它可能不适合大型应用网站,但嵌入式里用CGI提供API还是很有用的,部署非常容易。

搭建之后,测试一下

$ ./test.py
GET http://127.0.0.1/v1/lic/test?test=yes&name=colin
web output:
test=yes
name=colin


POST http://127.0.0.1/v1/lic/test
POST input:
{"k3": "test", "k2": "456", "k1": 123}
web output:
 k3= test
 k2= 456
 k1= 123

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
python编程使用协程并发的优缺点
Sep 20 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python 处理图片像素点的实例
Jan 08 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
django 环境变量配置过程详解
Aug 06 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
关于Python中进度条的六个实用技巧分享
Apr 05 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 #Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 #Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 #Python
Python基于分水岭算法解决走迷宫游戏示例
Sep 26 #Python
Python计算斗牛游戏概率算法实例分析
Sep 26 #Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 #Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 #Python
You might like
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
Python获取当前时间的方法
2014/01/14 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
python线程中同步锁详解
2018/04/27 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
Python中调用其他程序的方式详解
2019/08/06 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
python中有帮助函数吗
2020/06/19 Python
一个C/C++编程面试题
2013/11/10 面试题
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
军校本科大学生自我评价
2014/01/14 职场文书
运动会通讯稿200字
2014/02/16 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
欢迎领导标语
2014/06/27 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis