我正在尝试向我运行的本地服务器发出GET请求。我无法返回正确的数据,我看到了一个未经授权的'响应。鉴于String'令牌,任何人都可以发现任何明显的问题。是对的。
protected Object doInBackground(Void... params) {
try {
String url = "http://192.168.0.59:8000/events/";
URL object = new URL(url);
HttpURLConnection con = (HttpURLConnection) object.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Authorization:", "Token " + token);
//Display what the GET request returns
StringBuilder sb = new StringBuilder();
int HttpResult = con.getResponseCode();
if (HttpResult == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(
new InputStreamReader(con.getInputStream(), "utf-8"));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
} else {
System.out.println(con.getResponseMessage());
}
} catch (Exception e) {
Log.d("Uh Oh","Check your network.");
return false;
}
return false;
} *
我能够从命令行获得一个curl请求:
curl -H "Authorization: Token token" http://0.0.0.0:8000/events/
答案 0 :(得分:0)
事实证明,这个问题是由con.setDoOutput(true);
引起的,因为获取请求不包含正文。
答案 1 :(得分:0)
尝试一下 con.setRequestProperty(“ Authorization”,“ Bearer” +令牌);