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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
Python中请使用isinstance()判断变量类型
Aug 25 Python
进一步理解Python中的函数编程
Apr 13 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
Python实现简单的语音识别系统
Dec 13 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
Django和Flask框架优缺点对比
Oct 24 Python
Pandas 缺失数据处理的实现
Nov 04 Python
python创建学生成绩管理系统
Nov 22 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Jun 03 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
js前端导出Excel的方法
2017/11/01 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
django初始化数据库的实例
2018/05/27 Python
np.dot()函数的用法详解
2020/01/17 Python
python如何提升爬虫效率
2020/09/27 Python
房地产销售员的自我评价分享
2013/12/04 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
文明好少年事迹材料
2014/08/19 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
银行贷款收入证明
2014/10/17 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
springboot入门 之profile设置方式
2022/04/04 Java/Android
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫