Android Volley で送信した JSON データを、 Python(cgi) で受け取るには
Android のライブラリ Volley で JSON を POSTで送った後、Pythonで取り出せません。
クライアント側 (Android )
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,url,jsonData,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
サーバ側 (Python)
import json
import sys
import cgi
print "Content-Type: application/json\n"
form = cgi.FieldStorage()
print form
myjson = json.load(sys.stdin)
print myjson
結果
FieldStorage(None, None, '{"key":"value"}')
エラーログ
Traceback (most recent call last):
File "receive.py", line 20, in <module>
myjson = json.load(sys.stdin)
File "/usr/lib/python2.7/json/__init__.py", line 290, in load
**kw)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
curl
で -d "{'key':'value'}"
で渡しても同じでした。
データの送信自体はできているようなのですが、自由に使えるデータとして変数に格納するなど、取り出す方法がわかりません。回答よろしくお願いします。