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抓取某汽车网数据解析html存入excel示例
Dec 04 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
python 获取图片分辨率的方法
Jan 08 Python
Python numpy中矩阵的基本用法汇总
Feb 12 Python
python assert的用处示例详解
Apr 01 Python
Python微信操控itchat的方法
May 31 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
Python之Class&amp;Object用法详解
Dec 25 Python
Python切割图片成九宫格的示例代码
Mar 10 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
在php中取得image按钮传递的name值
2006/10/09 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
node.js基础知识小结
2018/02/26 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
护士上岗前培训自我鉴定
2014/04/20 职场文书
股份合作协议书
2014/09/10 职场文书
新党章的学习心得体会
2014/11/07 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis