我有一段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