python使用requests通過代理地址發送application/x-www-form-urlencoded報文數據


 通過代理地址發送以form表單數據格式(它要求數據名稱(name)和數據值(value)之間以等號相連,與另一組name/value值之間用&相連。例如:parameter1=12345&parameter2=23456。)請求到遠程服務器,並獲取請求響應報文。建議溝通開發確認數據名稱都有哪些。該請求消息頭中"Content-Type":字段為"application/x-www-form-urlencoded; charset=UTF-8"。用戶可以根據需要新增請求頭字段,只需傳入請求頭中待新增的除了'Content-Type'字段外的其他字段數據。

    def client_post_formurlencodeddata_proxy_requests(self,request_url,requestdata,headerdict={},**kwargs):
        #功能說明:通過代理地址發送以form表單數據格式(它要求數據名稱(name)和數據值(value)之間以等號相連,與另一組name/value值之間用&相連。例如:parameter1=12345&parameter2=23456。)請求到遠程服務器,並獲取請求響應報文。該請求消息頭要求為:{"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}。
        #輸入參數說明:接收請求的URL;請求報文數據,格式為name1=value1&name2=value2、待添加到請求頭中的字段值組成的字典,默認為{},表示不新增字段、http或者https請求代理地址組成的字典,格式例如為{'http': 'http://192.168.111.222:8888', 'https': 'http://192.168.333.444:8888'}。
        #輸出參數:請求響應報文
        #by xiaocc[20180709]        

        #從構造的請求報文文件中獲取請求報文數據
#         requestJSONdata=str(requestJSONdata).replace("+", "%2B")
        requestdata=requestdata.encode("utf-8")
        #默認請求頭
        head = {"Content-Type": "application/x-www-form-urlencoded; 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 u'服務器接收請求報文的地址為:: ',request_url
        print u'客戶端請求報文為(客戶端 --> 服務器):\n',str(requestdata).decode('utf-8')

        proxyurl= kwargs['proxyurl']
        print u'請求代理地址為:',proxyurl        
        #發送請求報文到服務端
        r = requests.post(request_url,data=requestdata,headers=head,proxies=proxyurl,verify=False)
        print u'請求頭headers為: ',r.request.headers
        
        #獲取請求響應報文數據
        responsedata=r.text
        print u"get the status: ",r.status_code
        print u'服務器響應報文為(客戶端  <-- 服務器):\n ',responsedata
  
        #返回請求響應報文
        return responsedata

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM