Java 获取URL的内容
在Java网络资源的道路上,我历经坎坷,不断摸索,才逐渐领悟到了获取URL内容的技巧。在此,我将以GET方式为例,分享Java获取URL内容的技术要点。
要获取URL内容,需要把握三个核心要点:创建HttpURLConnection、打开URL并创建InputStream、逐行(或逐字节)读取内容。在实际操作中,我们需要按照以下步骤进行。
一、创建HttpURLConnection。这是连接URL的重要一步,通过它我们可以与网络资源进行交互。
二、打开URL,创建一个InputStream。这一步是获取URL内容的关键,通过InputStream我们可以读取到URL中的数据信息。
三、逐行(或逐字节)读取内容。在读取数据时,我们需要逐行或逐字节地读取,以便获取完整的URL内容。如果需要,我们还需要对读取的数据进行编码转换,将其转换为字符串形式。
接下来,我将给出一段示例代码,展示如何实现上述步骤。
```java
public String getUrlContent(String path) {
String rtn = "";
int c;
try {
URL l_url = new URL(path);
HttpURLConnection l_connection = (HttpURLConnection) l_url.openConnection();
// 设置User-agent头,很多服务器要求此头,否则可能直接返回403错误
l_connection.setRequestProperty("User-agent", "Mozilla/4.0");
l_connection.connect();
InputStream l_urlStream = l_connection.getInputStream();
// 逐字节读取InputStream
while ((c = l_urlStream.read()) != -1) {
int all = l_urlStream.available(); // 获取本次循环可用的最大字节数目
byte[] b = new byte[all]; // 创建字节数组
l_urlStream.read(b); // 读取全部可用字节到字节数组中
rtn += new String(b, "UTF-8"); // 将字节数组转换为UTF-8字符串
}
// 可以根据需要在此处稍作线程休眠,例如:Thread.sleep(2000);
l_urlStream.close(); // 关闭InputStream
} catch (Exception e) {
e.printStackTrace();
}
return rtn; // 返回读取到的URL内容
}
```
在这段代码中,`l_connection.setRequestProperty("User-agent","Mozilla/4.0");`这行代码非常重要,因为很多服务器要求请求头中包含User-agent信息,否则可能直接返回403错误。
而逐字节读取的过程则是通过`while ((c = l_urlStream.read()) != -1)`这个循环来实现的。在循环中,我们首先通过`l_urlStream.available()`获取本次循环可用的最大字节数目,然后创建一个字节数组`byte[] b`,将读取到的字节数据存储在其中。将字节数组转换为字符串形式,这里我们使用的是UTF-8编码。如果需要读取其他编码的数据,可以根据实际情况进行相应调整。至于如何获取Meta信息以及匹配编码方式,需要自己想办法实现。
编程语言
- Java 获取URL的内容
- 一个用JSP做的日历
- .net mvc页面UI之Jquery博客日历控件实现代码
- bootstrap 弹出框modal添加垂直方向滚轴效果
- 轻松掌握jQuery中wrap()与unwrap()函数的用法
- js实现百度地图定位于地址逆解析,显示自己当前
- jQuery自定义元素右键点击事件(实现案例)
- 使用canvas及js简单生成验证码方法
- 基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
- asp.net错误页面处理示例分享
- laravel框架中路由设置,路由参数和路由命名实例
- 使用.NET中的Action及Func泛型委托深入剖析
- pjblog实现类似CMS的首页调用
- PHP文字转图片功能原理与实现方法分析
- Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
- ASP.NET中MVC从后台控制器传递数据到前台视图的方