对Django服务器的Java Post请求-->;403错误代码
我是Java新手,我有一个小项目作为学习任务。 第一部分很简单,但现在我卡住了 我想通过Java中的post请求获得一些网站信息。 但棘手的部分是crsf保护,我不知道如何处理它,因为如果我尝试发出POST请求,我会得到错误代码: 服务器为URL返回了HTTP响应代码:403: 我被告知,我必须通过get请求获得csrf令牌,并将该令牌用于post请求,以告诉保护系统我不是机器人 所以我这样做了:对Django服务器的Java Post请求-->;403错误代码,java,django,cookies,Java,Django,Cookies,我是Java新手,我有一个小项目作为学习任务。 第一部分很简单,但现在我卡住了 我想通过Java中的post请求获得一些网站信息。 但棘手的部分是crsf保护,我不知道如何处理它,因为如果我尝试发出POST请求,我会得到错误代码: 服务器为URL返回了HTTP响应代码:403: 我被告知,我必须通过get请求获得csrf令牌,并将该令牌用于post请求,以告诉保护系统我不是机器人 所以我这样做了: URL url = new URL(http://v1stats.desy.de:8080);
URL url = new URL(http://v1stats.desy.de:8080);
try {
URLConnection conn = url.openConnection();
Map<String, List<String>> map = conn.getHeaderFields();
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
token = map.get("Set-Cookie").toString();
token = (String) token.subSequence(1, token.indexOf(";"));
} catch (Exception e) {
e.printStackTrace();
}
在那之后,我有代币
我的邮政申请代码如下:
Map<String,Object> params = new LinkedHashMap<>();
params.put("start", "27/10/2015");
params.put("end", "27/10/2015");
params.put("room", "Basketballfeld");
params.put("organizer", "");
params.put("eventname", "");
params.put("description", "");
StringBuilder postData = new StringBuilder();
for (Map.Entry<String,Object> param : params.entrySet()) {
if (postData.length() != 0)
postData.append('&');
postData.append(URLEncoder.encode(param.getKey(), "UTF-8") + "=");
postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
System.out.println(postData);
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
conn.setDoOutput(true);
conn.getOutputStream().write(postDataBytes);
Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
有谁能告诉我我必须做什么,发送crsf令牌和请求,以确保Django服务器响应我想要的数据?
还是我的所作所为完全错了
我在网上搜索了很多,但我找不到解决办法-(
(这是肯定的,因为我不知道该怎么做,也不知道该搜索什么)
谢谢你的帮助
Map<String,Object> params = new LinkedHashMap<>();
params.put("start", "27/10/2015");
params.put("end", "27/10/2015");
params.put("room", "Basketballfeld");
params.put("organizer", "");
params.put("eventname", "");
params.put("description", "");
StringBuilder postData = new StringBuilder();
for (Map.Entry<String,Object> param : params.entrySet()) {
if (postData.length() != 0)
postData.append('&');
postData.append(URLEncoder.encode(param.getKey(), "UTF-8") + "=");
postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
System.out.println(postData);
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
conn.setDoOutput(true);
conn.getOutputStream().write(postDataBytes);
Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
start=27%2F10%2F2015&end=27%2F10%2F2015&room=Basketballfeld&organizer=&eventname=&description=