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如何通过protobuf实现rpc
Mar 06 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Python为何不支持switch语句原理详解
Oct 21 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
德生9700DX电路分析
2021/03/02 无线电
Smarty+QUICKFORM小小演示
2007/02/25 PHP
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
YII框架常用技巧总结
2019/04/27 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
python中range()与xrange()用法分析
2016/09/21 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
django form和field具体方法和属性说明
2020/07/09 Python
python利用platform模块获取系统信息
2020/10/09 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
《太阳》教学反思
2014/02/21 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
家长给老师的感谢信
2015/01/20 职场文书
面试复试通知单
2015/04/24 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript