[Python] request.put non funziona, Unsupported Media Type error 415

Gollum1 gollum1.smeagol1 a gmail.com
Gio 19 Mar 2015 11:18:04 CET


non riesco a capire come devo fare per utilizzare questo comando...

tutte le parti precedenti, dove utilizzo le get, e poi faccio le
analisi del ritorno, funzionano tutte perfettamente, quando poi arrivo
all'ultimo passo, dove devo fare la modifica del dato che mi
interessa, mi ritrovo a non poterlo fare...

    response = requests.get(urls['callforwardallsetting'],
cookies=cookies, verify=False)
    assert response.status_code == requests.codes.ok

    print(response.text)

    response = requests.put(urls['callforwardallsetting'], fwd_param,
cookies=cookies, verify=False)
    print(fwd_param)
    print(response.text)
    print(response.status_code)
    print(response.cookies)
    assert response.status_code == requests.codes.ok


il ritorno è il seguente:

<?xml version="1.0" encoding="UTF-8"
standalone="yes"?><callforwardallsetting
uri="http://path_completo/callforwardallsetting" version="9.1.2"
enabled="true" **o "false se non è attiva nessuna
deviazione**><id>326bd07b-cce2-4071-9383-a7d1fab5e8d9</id><voicemailenabled>false</voicemailenabled><destinationnumber>"il
numero su cui c'è la deviazione, altrimenti è
vuoto"</destinationnumber><datetimestamp>1426752977</datetimestamp><callingsearchspace_cfa>096478cd-fc23-decd-aa98-16e7736534a0</callingsearchspace_cfa><callingsearchspace_scfa
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:nil="true"/><history
uri="https://path_completo/callforwardallsetting/history"/></callforwardallsetting>

Traceback (most recent call last):
[{"voicemailenabled": "false", "destinationnumber": "32497"}]
Unsupported Media Type
415
<RequestsCookieJar[]>
  File "/home/mauro/Documenti/Sviluppo/GestoreTelefonico/CiscoCallManager.py",
line 203, in <module>
    set_forward(user, password, '33000', '32497')
  File "/home/mauro/Documenti/Sviluppo/GestoreTelefonico/CiscoCallManager.py",
line 180, in set_forward
    assert response.status_code == requests.codes.ok
AssertionError

ho provato sia pacchettizzandolo con json:

fwd_param = json.dumps([{'destinationnumber': destination_number,
'voicemailenabled': "false"}])

e con l'inserimento diretto:

fwd_param = {'destinationnumber': destination_number,
'voicemailenabled': "false"}

ho provato anche a metterlo tutto come stringa:

fwd_param = "{'destinationnumber': destination_number,
'voicemailenabled': 'false'}"

ma quest'ultima è stata naturalmente una forzatura, in quanto la
documentazione di request.put dice esplicitamente che deve essere:

"data – (optional) Dictionary, bytes, or file-like object to send in
the body of the Request."


mi viene il dubbio di un qualche campo hidden, ma neppure facendo il
controllo con livehttp_headers ne richiedendo la visualizzazione di
campi nascosti con webdev_tools (sempre su firefox) riesco a vederlo.

c'è da dire che le pagine sono fatte con il framework javascript dojotollkit.

poco fa mi è venuto un dubbio, che cisco esponesse delle api per poter
fare lo stesso lavoro che voglio fare io, ricercando mi salta fuori
questa pagina:

http://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cucm/devguide/axl_prg/4_2_x/axlpg421.html#wp36834

ma sinceramente non riesco a capire se posso controllare o meno il
callmanager, e non so proprio che cosa sia SOAP...

qualcuno è in grado di darmi qualche info su come posso sbloccare
questa situazione?

Byez
-- 
Gollum1 - http://www.gollumone.it
Tesssssoro, dov'é il mio tessssoro...


Maggiori informazioni sulla lista Python