python urllib的用法实例

import urllib2
import  urllib
import  json

def _post_json_by_urllib(url,jsondata):
    request=urllib2.Request(url,jsondata)
    request.add_header("Content-type","application/json")
    request.get_method=lambda :"POST"
    request=urllib2.urlopen(request)
    return request.read()

class Api(object):
    def __init__(self,url):
        self.url=url

    def get(self,data={}):#get请求
        assert type(data)==dict
        data=dict([((key if type(key)!=unicode else key.encode("utf-8")) ,\
        (v if type(v)!=unicode else v.encode("utf-8")) )  for key,v in data.items()])
        querystring=urllib.urlencode(data)
        if "?" not in self.url:
            url=self.url+"?"+querystring
        else:
            url=self.url+'&'+querystring
        try:
            fd=urllib2.urlopen(url)
            data=fd.read()
            return (True,data)
        except Exception as e :
            return  (False,str(e))
    def post(self,data={},is_json=False):#post请求
        assert type(data)==dict
        data=dict([((key if type(key)!=unicode else key.encode("utf-8")) ,\
        (v if type(v)!=unicode else v.encode("utf-8")) )  for key,v in data.items()])
        if is_json==False:
            data=urllib.urlencode(data)
            try:
                #req = urllib2.Request(self.url,data)
                data=urllib2.urlopen(self.url,data,timeout=3)
                return (True,data.read())
            except Exception as e :
                return  (False,str(e))
        else:
            try:
                data=json.dumps(data)
                result=_post_json_by_urllib(self.url,data)
                return  (True,result)
            except Exception as e :
                return  (False,str(e))


转载于:https://my.oschina.net/u/1458120/blog/666249

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值