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))
相關文章
相關標籤/搜索