1. 程式人生 > 實用技巧 >python使用requests通過代理地址傳送text/xml報文資料

python使用requests通過代理地址傳送text/xml報文資料

    def client_post_xmldata_proxy_requests(self,request_url,requestxmldata,headerdict={},**kwargs):
        #功能說明:通過代理地址傳送text/xml請求報文到指定的地址並獲取請求響應報文
        #輸入引數說明:接收請求的URL,xml請求報文資料,待新增到請求頭中的欄位值組成的字典,預設為{},表示不新增欄位、http或者https請求代理地址組成的字典,格式例如為{'http': 'http://192.168.111.222:8888', 'https': 'http://192.168.333.444:8888'}。
        #輸出引數:請求響應報文
        #by xiaocc[20180709]        

        #預設請求頭
        head={"Content-Type":"text/xml; charset=UTF-8", 'Connection': 'close'}
        print u'請求頭待更新的資料:',headerdict,u'該資料型別為:',type(headerdict)
        #比對輸入的header與預設的head,根據輸入要求更新請求頭
        if headerdict=='{}':#若未傳入更新的請求頭資料,則選擇預設請求頭
            pass
        elif type(headerdict) in (dict,): #若傳入的更新的請求頭資料為字典格式,則更新到預設請求頭
            for key in headerdict: #判斷待新增到預設head中的鍵值對
                head[key]=headerdict[key] #根據輸入更新預設head資料
        else:
            logging.error(u'請確保輸入的請求頭更新資料格式為字典格式!' )
            raise Exception
        print '伺服器接收請求報文的地址為:',request_url
        print '客戶端請求xml報文資料為(客戶端 --> 伺服器):\n',requestxmldata
        
        proxyurl= kwargs['proxyurl']
        print u'請求代理地址為:',proxyurl        
        #傳送請求報文到商戶前置
        r = requests.post(request_url,data=requestxmldata,headers=head,proxies=proxyurl,verify=False)
        print '請求頭headers為: ',r.request.headers
        
        #獲取請求響應報文資料
        responsedata=r.text
        print "get the status: ",r.status_code
        print '伺服器響應報文為(客戶端  <-- 伺服器): ',responsedata
          
        #返回請求響應報文
        return responsedata