我有一段Java代碼嘗試將POST數據發送到Django應用程序。但是,這個視圖根本就不會被調用。如果我將粘貼的Java代碼粘貼到瀏覽器中,則會調用Django視圖。我不知道我錯過了什麼,但Java寫入時必須有錯。發送JSON POST到Django應用程序
這是Java功能做寫:
public void executeWrite(String requestUrl, JsonObject jsonObject)
{
DataInputStream input = null;
try
{
URL url;
HttpURLConnection urlConn;
DataOutputStream printout;
System.out.println(requestUrl);
// URL of CGI-Bin script.
url = new URL (requestUrl);
// URL connection channel.
urlConn = (HttpURLConnection)url.openConnection();
// Let the run-time system (RTS) know that we want input.
urlConn.setDoInput (true);
// Let the RTS know that we want to do output.
urlConn.setDoOutput (true);
// No caching, we want the real thing.
urlConn.setUseCaches (false);
// Specify the content type.
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("content-type","application/json; charset=utf-8");
OutputStreamWriter wr = new OutputStreamWriter(urlConn.getOutputStream());
wr.write(jsonObject.toString());
wr.flush();
wr.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
現在requestURL傳遞給函數直接對應於一個Django的視圖。該requestURL是:
http://127.0.0.1:8000/events/rest/33456/create
這是Django的Urlconfig:
(r'^events/rest/(?P<key>\d+)/create', 'events.views.restCreateEvent'),
最後這是一個永遠不會被Java代碼調用
@csrf_exempt
def restCreateEvent(request, key):
#doesn't really matter what is in here it never runs
這樣的觀點,我在做什麼Django服務器永遠不會收到POST請求,這是錯誤的嗎?我花了大約2個小時試圖找出它,並找不到Java代碼的任何問題。顯然有些事情是錯誤的。
您應該測試Java應用程序發送的內容並在此處顯示以確定問題是出現在Java部分還是Django上。 – Lycha 2012-08-04 20:55:27
你會如何推薦測試它?我試圖讓Wireshark向我展示流量,但我似乎無法做到這一點。我在OS X上。它顯示了大量的其他HTTP流量,但即使我的工作REST調用由於某種原因也未被記錄。 – Jon 2012-08-04 20:57:38
你看到請求在開發服務器上進來嗎?檢查你沒有在視圖中同一個函數的多重定義。 – Rohan 2012-08-04 21:02:22