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常规方法实现数组的全排列
Mar 17 Python
Python pickle模块用法实例
Apr 14 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
python实现自主查询实时天气
Jun 22 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
python文件写入write()的操作
May 14 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
python中四舍五入的正确打开方式
Jan 18 Python
用python制作个视频下载器
Feb 01 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生成压缩文件实例
2015/02/07 PHP
PHP数组相关函数汇总
2015/03/24 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
vue项目中api接口管理总结
2018/04/20 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
使用python3实现操作串口详解
2019/01/01 Python
python程序控制NAO机器人行走
2019/04/29 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python用match()函数爬数据方法详解
2019/07/23 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
外企C语言笔试题
2013/11/10 面试题
环卫工人先进事迹材料
2014/06/02 职场文书