php代替curl的方法,Python中的CURL替代方法

一些例子,如何使用urllib的东西,用一些糖的语法。 我知道请求和其他库,但urllib是python的标准库,并不需要单独安装任何东西。

Python 2/3兼容。

import sys if sys.version_info.major == 3: from urllib.request import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, Request, build_opener from urllib.parse import urlencode else: from urllib2 import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, Request, build_opener from urllib import urlencode def curl(url, params=None, auth=None, req_type="GET", data=None, headers=None): post_req = ["POST", "PUT"] get_req = ["GET", "DELETE"] if params is not None: url += "?" + urlencode(params) if req_type not in post_req + get_req: raise IOError("Wrong request type \"%s\" passed" % req_type) _headers = {} handler_chain = [] if auth is not None: manager = HTTPPasswordMgrWithDefaultRealm() manager.add_password(None, url, auth["user"], auth["pass"]) handler_chain.append(HTTPBasicAuthHandler(manager)) if req_type in post_req and data is not None: _headers["Content-Length"] = len(data) if headers is not None: _headers.update(headers) director = build_opener(*handler_chain) if req_type in post_req: if sys.version_info.major == 3: _data = bytes(data, encoding='utf8') else: _data = bytes(data) req = Request(url, headers=_headers, data=_data) else: req = Request(url, headers=_headers) req.get_method = lambda: req_type result = director.open(req) return { "httpcode": result.code, "headers": result.info(), "content": result.read() } """ Usage example: """ Post data: curl("http://127.0.0.1/", req_type="POST", data='cascac') Pass arguments (http://127.0.0.1/?q=show): curl("http://127.0.0.1/", params={'q': 'show'}, req_type="POST", data='cascac') HTTP Authorization: curl("http://127.0.0.1/secure_data.txt", auth={"user": "username", "pass": "password"})

function不完整,可能不够理想,但显示出使用的基本表述和概念。 额外的东西可以添加或改变口味。

12/08更新

这是一个GitHub链接,以实时更新的来源。 目前支持:

授权

CRUD兼容

自动字符集检测

自动编码(压缩)检测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值