Deluge Web JSON API中未经过身份验证的错误

时间:2016-05-08 13:50:47

标签: python raspberry-pi python-requests

我正在使用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 "---------------"

1 个答案:

答案 0 :(得分:0)

知道了。 会话cookie没有被共享,因为我使用不同的对象运行每个请求。使用以下方式开始会话:

r=requests.session()

然后通过仅在r上调用POST请求来运行每个请求。