进行post请求,Python提供了httplib、urllib2,同时也可以引用requests模块的一些方法。前几天做持续集成,运用requests写了一个post请求。代码如下:
import reuqests
xmlhead = (''+'
xmlbody= (''+'
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 = (''+'
xmlbody= (''+'
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识别不到参数,就要报空指针异常了。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章