1

Glassfishで実行されているWebサービスにPythonRESTPOSTを作成しようとすると問題が発生します。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で有効な値(数値、文字列、配列、オブジェクト、'true'、'false'、または'null')が必要です@ 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 に答える