HttpURLConnection
을 사용하여 서버에서 데이터를 가져 오려고합니다. 요청은 GET
요청입니다. 그러나 항상 상태 코드 405(BAD_METHOD)
을 반환합니다. 같은 사용 HttpClient
을 수행하는 경우, 내가 원하는 출력을 얻을 수 있지만HttpUrlConnection Get 메서드가 상태 코드 405를 반환합니다.
URL url2 = new URL("http://www.example.com/api/client_list?");
HttpURLConnection connection = (HttpURLConnection) url2
.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(NET_READ_TIMEOUT_MILLIS);
connection.setConnectTimeout(CONNECTION_TIMEOUT_MILLIS);
connection.setRequestProperty("Authorization", token);
connection.setDoInput(true);
connection.setDoOutput(true);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("client_id", clientRole));
OutputStream os = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
connection.connect();
getQuery()
private String getQuery(List<NameValuePair> params)
throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params) {
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
}
return result.toString();
}
: 아래는 내가 쓴 방법이다. 다음은 HttpClient
String url = "http://www.example.com/api/client_list?client_id=" + rolename;
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Authorization", "Bearer " + token);
httpClient.execute(httpGet);
내가 HttpURLConnection의 잘못 뭐하는 거지 받고 있지 않다과 같은 작업입니다. 당신이 말한대로 서버 요청 아마 하지가 방법을 GET 그래서
첫 번째 코드 조각에서'getQuery()'가 속한 패키지는 무엇입니까? –
'connection.setDoInput (true); 및 'connection.setDoOutput (true);'전에'connection.setRequestMethod ("GET");을 호출했는지 확인하십시오. 그렇지 않으면 HttpURLConnection에게 연결이 설정된 후 GET을 수행한다고 말합니다. –
setDoInput (true) 메소드가 POST로 설정되도록하는 것은 확실합니다. – GreyBeardedGeek