Ich kann die Postanforderung mit dem Befehl 'curl' nicht ordnungsgemäß senden

0

Ich bin sehr neu in der Django-Programmierung. Nachdem ich einige grundlegende Curl-Befehle gelesen habe, erhalte ich die folgende Post-Anfrage per Curl an den Python-Server

curl --data "system_uuid=b28964bf-3e9e-47d7-af5e-4e221cc1a697&media_id=1&Status=1&upload_on=2013-12-04 17:15:32" http://127.0.0.1:8000/server/32/1001/2/

auf die folgende url

from django.conf.urls.defaults import patterns
handler500 = 'django.views.defaults.server_error'
urlpatterns = patterns('server.views',
( r'^server/32/(?P<client_id>\d+)/(?P<msg_version>\d+)/$','check_media_status'),)

Meine Ansicht 'check_media_status' ist wie folgt einfach:

def check_media_status(request, client_id, msg_version ):
print "Request Accepted"
return http.HttpResponse("ok")

Aber ich bekomme ständig folgende Fehlermeldung in meinem Python-Server

[21/Jul/2014 10:51:43] "POST /server/32/1001/2/ HTTP/1.1" 500 94027

Meine Django-Version ist 1.3.1 & Python-Version ist 2.7.3

Ich kann nicht herausfinden, was falsch läuft. :(

devlin31
quelle

Antworten:

0

Ihre Post-Daten enthalten Leerzeichen, ersetzen Sie mit "+". Sie sollten korrekt codiert sein.

denisvm
quelle
Zwischen den Daten- und Zeitinformationen in 'upload_on' befindet sich nur ein Leerzeichen in den Post-Daten. Also habe ich das Leerzeichen durch '+' ersetzt, wie Sie gesagt haben, und auch durch '% 20', das ich aus derselben Ressource erhalten habe, in der ich über Curl gelesen habe: curl --data "system_uuid = b28964bf-3e9e-47d7-af5e-4e221cc1a697 & media_id = 1 & Status = 1 & upload_on = 04.12.2013 + 17: 15: 32 " 127.0.0.1:8000/server/32/1001/2 curl --data" system_uuid = b28964bf-3e9e-47d7-af5e-4e221cc1a697 & media_id = 1 & Status = 1 & upload_on = 2013 -12-04% 2017: 15: 32 " 127.0.0.1:8000/server/32/1001/2
devlin31
Es tut uns leid. Ich bin sehr sehr neu bei Stack Exchange. Ich wusste wirklich nicht, wie man Codedaten in Kommentare einfügt. Hier sind meine Befehle. {curl --data "system_uuid = b28964bf-3e9e-47d7-af5e-4e221cc1a697 & media_id = 1 & Status = 1 & upload_on = ‌ 2013-12-04 + 17: 15: 32" 127.0.0.1:8000/server/32/1001/2} & 2nd one {curl --data "system_uuid = b28964bf-3e9e-47d7-af5e-4e221cc1a697 & media_id = 1 & Status = 1 & upload_on = ‌ 2013-12-04% 2017: 15: 32" 127.0.0.1:8000/server/32/1001 / 2}
devlin31
Sie sollten Leerzeichen durch "+" und nicht durch "% 20" ersetzen. Die POST-Daten unterscheiden sich geringfügig von der Abfragezeichenfolge, bei der% 20 für Leerzeichen verwendet wird. Kein Problem, wir sind hier um zu helfen :)
denisvm