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中使用lambda高效操作列表的教程
Apr 24 Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
浅谈python函数之作用域(python3.5)
Oct 27 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
python3中的md5加密实例
May 29 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
python修改txt文件中的某一项方法
Dec 29 Python
基于python历史天气采集的分析
Feb 14 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
Pytest中skip skipif跳过用例详解
Jun 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常用代码
2006/11/23 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python入门篇之条件、循环
2014/10/17 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python 自动化表单提交实例代码
2017/06/08 Python
python实现杨辉三角思路
2017/07/14 Python
python实现排序算法解析
2018/09/08 Python
在django中,关于session的通用设置方法
2019/08/06 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
合同专员岗位职责
2013/12/18 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
店面销售职位的职责
2014/03/09 职场文书
社区先进事迹材料
2014/05/19 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
踏青活动策划方案
2014/08/19 职场文书
长城的导游词
2015/01/30 职场文书
不同意离婚代理词
2015/05/23 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python