1

我在尝试将 Python REST POST 发布到在 Glassfish 上运行的 Web 服务时遇到了困难。我已经验证 POST 使用 CURL 可以正常工作,但使用 Python 没有运气。

这是可以正常工作的 CURL 请求。

curl -X POST -H "Content-Type: application/json" -d '{"id":1,"lastname":"smith"}' 
  http://192.168.0.20:8080/field1/resources/com.field1entity.field1

这是发出 POST 请求的 Python 代码

import urllib
import httplib2

def call():
http = httplib2.Http()

url = 'http://192.168.0.20:8080/field1/resources/com.field1entity.field1'

params = urllib.urlencode({"id":11111,"lastname":"oojamalip"})

response, content = http.request(url, 'POST', params, headers={'Content-type':'application/json'})
print "lets stop here to have a looksy at the variables"                               
print content

if __name__ == '__main__':

namesPage = call()
print namesPage

控制台输出,

意外字符('l'(代码 108)):在 [来源:org.apache.catalina.connector.CoyoteInputStream @18f494d;行:1,列:2]

希望有人能对这个问题有所了解。

谢谢尼克

4

1 回答 1

2

您正在对婴儿车进行 url 编码,然后告诉服务器它是 json 编码的

import json

params = json.dumps({"id":11111,"lastname":"oojamalip"})
# then
response, content = http.request(url, 'POST', body=params, headers={'Content-type':'application/json'})
于 2012-07-07T23:01:37.830 回答