Python+Post請求中涉及到多個參數data方法的應用


     進行post請求,Python提供了httplib、urllib2,同時也可以引用requests模塊的一些方法。前幾天做持續集成,運用requests寫了一個post請求。代碼如下:

import reuqests

xmlhead = ('<?xml version=\'1.0\' encoding=\'UTF-8\'?>'+'<InterBOSS>'+'<Value>0100</Value>'+.......)

xmlbody= ('<?xml version=\'1.0\' encoding=\'UTF-8\'?>'+'<InterBOSS>'+.........)

headers={'content-type' : 'text/xml'}

requests.post('http://192.168.1.1:8080/xxxxx', data = {'xmlhead': 'xmlhead', 'xmlbody' : 'xmlbody'})

代碼寫好后運行,請求報了空指針異常。定位jAVA工程代碼,看到JAVA工程里的xmlhead加載的內容為空。花費了好長時間,沒有解決此問題。

     試一下urllib2,看看是否報空指針異常。代碼如下:

import urllib2

import urllib

xmlhead = ('<?xml version=\'1.0\' encoding=\'UTF-8\'?>'+'<InterBOSS>'+'<Value>0100</Value>'+.......)

xmlbody= ('<?xml version=\'1.0\' encoding=\'UTF-8\'?>'+'<InterBOSS>'+.........)

data = {'xmlhead' : 'xmlhead', 'xmlbody' : 'xmlbody'}

urllib2.urlopen( url='http://192.168.1.1:8080/xxxxx',

                         urllib.urlencode(data))

發送請求后報空指針異常。

     最后定位發現data寫的有問題。把data = {‘xmlhead’: 'xmlhead', 'xmlbody' : 'xmlbody'}改為data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody}問題解決。

data后邊一般是等於字典,字典的key、value值習慣於加引號。個人認為本腳本中的value值:xmlhead、xmlbody是一個字符串賦予的值。post請求發送后,工程代碼通過xmlhead、xmlbody加載對應的字符串。如果value值也加上引號,工程里的xmlhead、xmlbody識別不到參數,就要報空指針異常了。   


免責聲明!

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



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