If the above doesn't apply, you may try to use the following code (hack) to skip the re-direction,
get the Location header and re-connect:
try {
URL url = new URL("http://www.ama.org/events ");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setFollowRedirects(true);
con.setInstanceFollowRedirects(false);
con.connect();
while (String.valueOf(con.getResponseCode()).startsWith("3")) {
String theLocation = con.getHeaderField("Location");
con.disconnect();
url = new URL(theLocation);
con = (HttpURLConnection) url.openConnection();
con.setFollowRedirects(true);
con.setInstanceFollowRedirects(false);
con.connect();
}
/** at this point you are located at the last(target)page of
redirection chain */
} catch (Exception ex) { ex.printStackTrace(); }
分享到:
相关推荐
如果服务器未能正确生成并发送这些元素,HttpClient就会抛出`ProtocolException`,指出服务器的响应无效。 1. **网络问题**:网络连接不稳定或者中断可能导致HttpClient无法接收到服务器的响应。检查网络连接,确保...
这里可以使用Java的`StringTokenizer`和`HashMap`实现: ```java String text = doc.text(); StringTokenizer tokenizer = new StringTokenizer(text); Map, Integer> wordCountMap = new HashMap(); while ...
com.android.volley.NoConnectionError: java.io.InterruptedIOException”,内容加载失败,问题出在重复调用 queue.start() 方法。 错误提示:com.android.volley.NoConnectionError: java.io....
当发送数据到URL时,如果遇到“Exception in thread "main" java.net.ProtocolException: cannot write to a URLConnection if doOutput=false - call setDoOutput(true)”的异常,表明`URLConnection`的`doOutput`...
遇到"java.net.SocketException: Connection reset"错误,通常是因为服务器端关闭了连接。这可能发生在读取或写入数据时。解决这个问题通常需要检查服务器端代码,确保其不会在数据传输期间意外关闭连接。 这些是...
org.apache.http.ProtocolException.class org.apache.http.ProtocolVersion.class org.apache.http.ReasonPhraseCatalog.class org.apache.http.RequestLine.class org.apache.http.StatusLine.class org.apache....
`java.net.ProtocolException`: cannotwrite toaURLConnectionif doOutput=false **异常描述**:通过 `URLConnection` 发送数据时,若 `doOutput` 属性设置为 false,则会抛出此异常。 **原因分析**:当 `...
- `openServer()` 方法可能涉及创建Socket连接到目标服务器,并初始化输入和输出流。 - 请求完成后,通常需要关闭相关资源,防止资源泄露。这可能在 `Http` 类的适当位置,或者在 `finally` 块中完成。 7. **编码...
- `java.net.URL`类用于解析和操作统一资源定位符(URL),`target`变量存储了请求的目标URL。 4. **HTTP请求方法**: - `GET`:请求获取指定URL的资源。 - `HEAD`:仅获取资源的元信息,不包含实际资源内容,常...
JAVA类说明文档 JAVA类说明文档是关于文件上传和下载的高效率类,提供了详细的说明和实例代码。该类可以直接使用,运行稳定,且可以放到自己的项目中。 在上传下载时,需要用到两个核心包:commons-fileupload-...
- **HttpURLConnection**:Java标准库中的`java.net.HttpURLConnection`类是Java进行HTTP通信的基础。它支持HTTP/1.1协议,可以用于发送GET、POST等请求。使用HttpURLConnection需要设置请求方法、添加请求头和写入...
在Java中,网络编程涉及到几个关键的类,它们位于`java.net`包下。对于IP层,`InetAddress`类用于标识网络上的硬件资源,可以通过IP地址或主机名创建。对于应用层,`URL`类是统一资源定位符,它能够定位互联网上的...
Java提供了一套强大的API,位于`java.net`包及其子包中,用于处理网络通信的各种需求。本章节将深入探讨Java网络编程的基础知识,包括TCP和UDP协议、IP地址、端口号以及套接字的概念。 首先,Java中的网络API支持IP...
HTTPClient抛出多种异常,如`IOException`、`HttpException`和`ProtocolException`,在编写代码时应适当地捕获和处理这些异常。 8. **最佳实践** - 使用合适的连接管理策略,防止连接泄漏。 - 关闭不再使用的...
System.out.println("Redirected to: " + redirectUrl); } } ``` **7.3 处理多层重定向** 对于多层重定向的情况,可以使用循环来递归地处理重定向: ```java String currentUrl = "http://shortlink.com"; while...
`ProtocolException`是协议相关的错误,`BindException`发生在绑定端口时出现问题,`UnknownServiceException`表示请求的服务未知。 在网络编程中,我们还需要关注安全性问题,比如使用SSL/TLS进行加密通信,防止...
throw new ProtocolException("cannot write to a URLConnection if doOutput=false - call setDoOutput(true)"); } else { if (this.method.equals("GET")) { this.method = "POST"; } } } } ``` 当`...
7. **错误处理**:HttpClient提供了丰富的异常处理机制,如`IOException`、`HttpException`和`ProtocolException`,使开发者能够更好地捕获和处理可能出现的问题。 HttpClient 4.5的这些特性使其成为Java开发者在...
2. **处理异常**:HttpClient可能会抛出各种异常,如IOException、ProtocolException等,需妥善处理,确保程序的健壮性。 3. **关闭资源**:使用完HttpClient后,记得关闭连接和流,避免资源泄漏。 4. **优化请求...