當我使用使POST請求以下使用「內容類型:應用/ JSON」在捲曲後給出HTTP/1.1 400 BAD REQUEST
curl -i -d "username=rock&password=rock" http://my_VM_IP/api/1.1/json/my_login/
它產生所要求的反應產生這樣的令牌(有刪節):
HTTP/1.1 200 OK
Date: Mon, 22 Oct 2012 08:37:39 GMT
Vary: Authorization,Accept-Language,Cookie,Accept-Encoding
Content-Type: text/plain
Transfer-Encoding: chunked
OK{"success": {"my_token": "required_token"}}
但是,當我嘗試同樣包括一個頭爲:
curl -i -H "Content-Type:application/json" -d "username=rock&password=rock" http://my_VM_IP/api/1.1/json/my_login/
它給我以下錯誤:
HTTP/1.1 400 BAD REQUEST
Date: Mon, 22 Oct 2012 11:12:04 GMT
Vary: Authorization,Accept-Language,Cookie,Accept-Encoding
***Content-Type: text/plain***
Content-Language: en-us
Connection: close
Transfer-Encoding: chunked
Bad Request
我不明白爲什麼會發生這種情況。而且還爲什麼內容類型顯示text/plain的,我也試過看着像Why Setting POST Content-type:"Application/Json" causes a "Bad Request" on REST WebService?一些其他問題。它也解決了我有同樣的問題。答案之後,我試圖給出各種格式的數據,如
{"username":"rock", "password":"rock"}
但沒有成功。提前致謝。
如果能詳細說明一下,我會很高興。目前我簡單地返回令牌如下:admin_api_token = admin_models.ApiToken.objects.create(管理員=管理員) [下一行]返回json_success_response({ 'admin_token':admin_api_token.token})P.S.所有例外都被照顧。 –
所有你需要做的是1)JSON編碼你的數據,2)添加'content_type =「application/json」'到'HttpResponse'構造函數。在你的情況下,'HttpResponse'由'json_success_response'返回。 –
添加content_type沒有任何作用..並添加Content-Type作爲返回HttpResponse(json.dumps(response),Content-Type =「application/json」)給出SyntaxError:關鍵字不能是表達式 –