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调用C语言开发的共享库方法实例
Mar 18 Python
Python numpy 常用函数总结
Dec 07 Python
Python IDLE清空窗口的实例
Jun 25 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
Python魔法方法功能与用法简介
Apr 04 Python
python如何实现代码检查
Jun 28 Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
python的pip有什么用
Jun 17 Python
python爬虫scrapy图书分类实例讲解
Nov 23 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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 连接mssql数据库 初学php笔记
2010/03/01 PHP
php header Content-Type类型小结
2011/07/03 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
php图片裁剪函数
2018/10/31 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
document.createElement()用法
2013/03/13 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Django返回json数据用法示例
2016/09/18 Python
python中time库的实例使用方法
2019/10/31 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
MADE法国:提供原创设计师家具
2018/09/18 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
.net工程师笔试题
2012/06/09 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
收款授权委托书
2014/10/02 职场文书
党支部季度考核意见
2015/06/02 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js