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编写检测数据库SA用户的方法
Jul 11 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
《与孩子一起学编程》python自测题
May 27 Python
python3.7.0的安装步骤
Aug 27 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
python顺序执行多个py文件的方法
Jun 29 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
python编写微信公众号首图思路详解
Dec 13 Python
记录模型训练时loss值的变化情况
Jun 16 Python
Python基于time模块表示时间常用方法
Jun 18 Python
python如何查找列表中元素的位置
May 30 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数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
通过C++学习Python
2015/01/20 Python
Python内建数据结构详解
2016/02/03 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
django session完成状态保持的方法
2018/11/27 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
Python安装selenium包详细过程
2019/07/23 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
COSETTE官网:奢华,每天
2020/03/22 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
会计学生自我鉴定
2014/02/06 职场文书
项目经理任命书
2014/06/04 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书