【发布时间】:2011-02-15 06:55:00
【问题描述】:
我遇到了一个非常奇怪的问题。我正在尝试使用 HTTP GET 和一些参数 (http://mydomain.com/method?param1=test¶m2=123) 调用 servlet (JSP)。如果我从浏览器或通过 bash 会话中的 WGET 调用它,它工作正常。但是,当我在 Java 客户端中使用 urlConnection 或 httpURLConnection 进行完全相同的调用时,服务器会返回 500 错误。
我已经尝试了我在网上找到的所有内容,包括:
urlConn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
但是,我尝试过的任何方法都没有奏效。不幸的是,我无法访问我正在调用的服务器,所以我看不到日志。
这是最新的代码:
private String testURLConnection() {
String ret = "";
String url = "http://localhost:8080/TestService/test";
String query = "param1=value1¶m2=value2";
try {
URLConnection connection = new URL(url + "?" + query).openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder content = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
content.append(line + "\n");
}
bufferedReader.close();
metaRet = content.toString();
log.debug(methodName + " return = " + metaRet);
} catch (Exception ex) {
log.error("Exception: " + ex);
log.error("stack trace: " + getStackTrace(ex));
}
return metaRet;
}
任何帮助将不胜感激!
【问题讨论】:
-
您能否发布所有用于向服务器发送 HTTP 请求的相关代码?
-
感谢您的快速回复。我用代码更新了我原来的帖子。
-
这是服务器端错误,请在程序中使用参数打印您的请求 URL 并将其粘贴到浏览器中。您可能没有使用正确的查询字符串。
-
嗨 Nishant - 感谢您的回复。我已经做到了,并且 URL 工作正常。
-
这可能是由于 URLConnection 发送了一个无效的 Accept 标头字段 - 尝试使用 setReqquestProperty("Accept", "/"); 覆盖它;
标签: java http httpurlconnection urlconnection