我正在使用Python请求库向我的Raspberry Pi上运行的Deluge Web torrent箱发送JSON请求。
Map<String, String> params = new HashMap<String, String>();
params.put("comment", "someOtherVal");
params.put("name", "someVal");
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, new JsonObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("JSONPost", response.toString());
//pDialog.hide();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("JSONPost", "Error: " + error.getMessage());
//pDialog.hide();
}
})
在运行上面的代码时,我获得了成功的身份验证,但是我的第二个请求发出错误,&#34;未经过身份验证&#34;
输出
{&#39; Content-Encoding&#39;:&#39; gzip&#39;,&#39;转码编码&#39;:&#39; chunked&#39;, &#39; Set-Cookie&#39;:&#39; _session_id = d888b2548fd6966490eef4b3657a1b342169; Expires = Sun,2016年5月8日14:22:45 GMT;路径= / json&#39;,&#39;服务器&#39;: &#39; TwistedWeb / 12.0.0&#39;,&#39;日期&#39;太阳,2016年5月8日13:22:45 GMT&#39;,&#39;内容类型&#39; ;:&#39; application / x-json&#39;} {&#34; id&#34;:1,&#34;结果&#34;:true,&#34;错误&#34;:null} < / p>
{&#39; Transfer-Encoding&#39;:&#39; chunked&#39;,&#39; Date&#39;:&#39; Sun,2016年5月8日13:22:45 GMT&#39 ;,&#39;服务器&#39;:&#39; TwistedWeb / 12.0.0&#39;,&#39;内容类型&#39;: &#39; application / x-json&#39;,&#39; Content-Encoding&#39 ;:&#39; gzip&#39;} {&#34; id&#34;:2,&#34;结果& #34 ;: null,&#34;错误&#34;: {&#34;消息&#34;:&#34;未经过身份验证&#34;,&#34;代码&#34;:1}}
如果我使用curl运行第二个请求,它就会起作用。
import requests
payload='{"method": "auth.login", "params": ["MY-PASSWORD"], "id": 1}'
r = requests.post("http://192.168.0.104:8112/json", data=payload)
print r.headers
print r.text
payload2='{"method": "core.add_torrent_magnet", "params": ["MAGNET-URI", {}], "id": 2}'
q = requests.post("http://192.168.0.104:8112/json", data=payload2)
print q.headers
print q.text
print "---------------"
答案 0 :(得分:0)
知道了。 会话cookie没有被共享,因为我使用不同的对象运行每个请求。使用以下方式开始会话:
r=requests.session()
然后通过仅在r上调用POST请求来运行每个请求。