1.编写useSourceViewer 类的基本框架,该类仅包括无返回值的main ()方法,该方法从参数中获取URL,通过输入缓冲和输出缓冲将该URL 原码输出。
2.编写useSourceViewer 类,代码如下:
import javanet;
import javaio;
public class useSourceViewer
{
public static void main (String[] args)
{
if (argslength > 0)
{
try
{
//读入URL
URL u = new URL(args[0]);
InputStream in = uopenStream( );
// 为增加性能存储输入流
in = new BufferedInputStream(in);
// 将输入流连接到阅读器
Reader r = new InputStreamReader(in);
int c;
while ((c = rread( )) != -1)
{
Systemoutprint((char) c);
}
Object o = ugetContent( );
Systemoutprintln("I got a " + ogetClass()getName( ));
}
catch (MalformedURLException e)
{
Systemerrprintln(args[0] + " is not a parseable URL");
}
catch (IOException e)
{
Systemerrprintln(e);
}
} // end if
} // end main
} // end SourceViewer}
从JDK15开始,
javanet包对统一资源定位符
(uniform resource locator URL)
和统一资源标识符
(uniform resource identifier URI)
作了非常明确的区分。
(1)URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如
mailto:cay@horstmancom
则不属于定位符,因为根据该标识符无法定位任何资源。
URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
URI 和 URL 概念上的不同反映在此类和 URL 类的不同中。
此
类的实例代表由 RFC 2396 定义的语法意义上的一个 URI 引用。URI 可以是绝对的,也可以是相对的。对 URI
字符串按照一般语法进行解析,不考虑它所指定的方案(如果有)不对主机(如果有)执行查找,也不构造依赖于方案的流处理程序。相等性、哈希计算以及比较都
严格地根据实例的字符内容进行定义。换句话说,一个 URI 实例和一个支持语法意义上的、依赖于方案的比较、规范化、解析和相对化计算的结构化字符串差不多。
作为对照,URL 类的实例代表了 URL 的语法组成部分以及访问它描述的资源所需的信息。URL 必须是绝对的,即它必须始终指定一个方案。URL 字符串按照其方案进行解析。通常会为 URL 建立一个流处理程序,实际上无法为未提供处理程序的方案创建一个 URL 实例。相等性和哈希计算依赖于方案和主机的 Internet 地址(如果有);没有定义比较。换句话说,URL 是一个结构化字符串,它支持解析的语法运算以及查找主机和打开到指定资源的连接之类的网络 I/O *** 作。
在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。
相反的是,URL类可以打开一个到达资源的流。
因此URL类只能作用于那些 Java类库知道该如何处理的模式,
例如>
知识先填坑:
假设访问路径为:file:///Users/xiao/learn/js_basics/11htmla=100&b=20&c=30;
分别通过正则匹配、拆分字符串成数组、新API URLSearchParams三种方式获取参数方法如下:
思路:
两次用到split方法,第一次将每个参数和值拆分为数组中的一个值;
遍历这个数组,每个参数和值再次分割,分别将参数和值赋值给一个对象的属性和值;
调用方法通过对象的属性,获取改值
public static String SendGET(String url,String param){
String result="";//访问返回结果
BufferedReader read=null;//读取访问结果
try {
//创建url
URL realurl=new URL(url+""+param);
//打开连接
URLConnection connection=realurlopenConnection();
// 设置通用的请求属性
connectionsetRequestProperty("accept", "/");
connectionsetRequestProperty("connection", "Keep-Alive");
connectionsetRequestProperty("user-agent",
"Mozilla/40 (compatible; MSIE 60; Windows NT 51;SV1)");
//建立连接
connectionconnect();
// 获取所有响应头字段
Map<String, List<String>> map = connectiongetHeaderFields();
// 遍历所有的响应头字段,获取到cookies等
for (String key : mapkeySet()) {
Systemoutprintln(key + "--->" + mapget(key));
}
// 定义 BufferedReader输入流来读取URL的响应
read = new BufferedReader(new InputStreamReader(
connectiongetInputStream(),"UTF-8"));
String line;//循环读取
while ((line = readreadLine()) != null) {
result += line;
}
} catch (IOException e) {
eprintStackTrace();
}finally{
if(read!=null){//关闭流
try {
readclose();
} catch (IOException e) {
eprintStackTrace();
}
}
}
return result;
}
以上就是关于Java访问指定URL并获取网页源代码全部的内容,包括:Java访问指定URL并获取网页源代码、HTTP 协议中 URI 和 URL 有什么区别、获取当前页面url参数的三种方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)