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编写暴力破解FTP密码小工具
Nov 19 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
python学习之matplotlib绘制散点图实例
Dec 09 Python
python实现图片筛选程序
Oct 24 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
python numpy实现文件存取的示例代码
May 26 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Django框架反向解析操作详解
Nov 28 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Python Pandas模块实现数据的统计分析的方法
Jun 24 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过滤危险html代码
2008/08/18 PHP
PHP 基本语法格式
2009/12/15 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
webpack搭建vue 项目的步骤
2017/12/27 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python unittest实现api自动化测试
2018/04/04 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
详解python深浅拷贝区别
2019/06/24 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
Python 爬虫的原理
2020/07/30 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
应用电子专业学生的自我评价
2013/10/16 职场文书
幼儿教师国培感言
2014/02/19 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
主持人开幕词
2015/01/29 职场文书