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判断IP地址合法性的方法实例
Mar 13 Python
python多进程操作实例
Nov 21 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
python字典基本操作实例分析
Jul 11 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
值得收藏的10道python 面试题
Apr 15 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
python 如何获取页面所有a标签下href的值
May 06 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基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
php图片裁剪函数
2018/10/31 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
对联广告js flash激活
2006/10/19 Javascript
Javascript面向对象编程
2012/03/18 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
python通过opencv实现批量剪切图片
2017/11/13 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
python爬虫之自制英汉字典
2019/06/24 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
python绘制随机网络图形示例
2019/11/21 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
教师实习自我鉴定
2013/12/11 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
银行委托书范本
2014/09/28 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
win7配置本地ftp服务器的图文教程
2022/08/05 Servers