通過代理地址發送以form表單數據格式(它要求數據名稱(name)和數據值(value)之間以等號相連,與另一組name/value值之間用&相連。例如:parameter1=12345¶meter2=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¶meter2=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