HttpUrlConnection BadRequest - 状态码 400
HttpUrlConnection BadRequest - Statuscode 400
我已经使用 HttpUrlConnection 实现了 class 从 google 地理编码 api 获取一些数据。当我在 android 上使用此代码时,它可以正常工作。但是,一旦我在另一个 "normal" java 程序中使用此代码,我有时会收到 status-code 400 (BadRequest)。这是我的代码:
HttpURLConnection c = null;
StringBuilder sb = new StringBuilder();
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.connect();
int status = c.getResponseCode();
switch (status) {
case HttpURLConnection.HTTP_OK:
case HttpURLConnection.HTTP_CREATED:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
}
} catch (SocketTimeoutException ex){
// Handle ...
} catch (MalformedURLException ex) {
// Handle ...
} catch (IOException ex) {
// Handle ...
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
}
}
}
我有可靠的互联网连接,而且我用来接收数据的 URL 也能正常工作,每当我尝试使用网络浏览器时。
提前致谢!
Bad Request 通常是由于 URL 不合适造成的。正如您提到的,并非每个 URL 都会出现此错误,只是对它们的一个看法。所以它必须与此有关。请尝试以下代码以确保您使用的 URL 的编码正确:
String url = ...; // your url
url = URLEncoder.encode(url,"UTF-8");
// Use 'url' ...
我已经使用 HttpUrlConnection 实现了 class 从 google 地理编码 api 获取一些数据。当我在 android 上使用此代码时,它可以正常工作。但是,一旦我在另一个 "normal" java 程序中使用此代码,我有时会收到 status-code 400 (BadRequest)。这是我的代码:
HttpURLConnection c = null;
StringBuilder sb = new StringBuilder();
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.connect();
int status = c.getResponseCode();
switch (status) {
case HttpURLConnection.HTTP_OK:
case HttpURLConnection.HTTP_CREATED:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
}
} catch (SocketTimeoutException ex){
// Handle ...
} catch (MalformedURLException ex) {
// Handle ...
} catch (IOException ex) {
// Handle ...
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
}
}
}
我有可靠的互联网连接,而且我用来接收数据的 URL 也能正常工作,每当我尝试使用网络浏览器时。 提前致谢!
Bad Request 通常是由于 URL 不合适造成的。正如您提到的,并非每个 URL 都会出现此错误,只是对它们的一个看法。所以它必须与此有关。请尝试以下代码以确保您使用的 URL 的编码正确:
String url = ...; // your url
url = URLEncoder.encode(url,"UTF-8");
// Use 'url' ...