Java 获取URL的内容

Java获取URL内容的,我这里只给出GET方式的,POST和其它方式的都是比较类似的。其技术要点就一下三点。
第一:创建HttpURLConnection
第二:打开URL,创建一个InputStream
第三:逐行(逐字节)读取,如果需要,转换编码,放入字符串。
好,一下就开始代码吧:


代码如下:

public String getUrlContent(String path){
String rtn = "";
int c;
try{
java.net.URL l_url = new java.net.URL(path);
java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();
l_connection.setRequestProperty("User-agent","Mozilla/4.0");
l_connection.connect();
InputStream l_urlStream = l_connection.getInputStream();
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");
}
//Thread.sleep(2000);
l_urlStream.close();
}catch(Exception e){
e.printStackTrace();
}
return rtn;
}

其中
l_connection.setRequestProperty("User-agent","Mozilla/4.0");
这句是必须的,很多服务器对于没有User-agent头的请求直接403了就。
然后采用InputStream.available()来一次性读取,返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数,如果需要的话,可以在后面稍微Sleep一下线程:
Thread.sleep(2000);
其中的


代码如下:

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");
}

是个很重要的读取过程,c表示读取流的标注,当结束的时候是-1,然后all是本次循环可用的最大字节数目,然后读取全部可用字节到byte[] b中,然后转换成UTF-8类型的字符串,注意,这里可以自己写方式,如果读取GB2312,就要写GB2312,至于有没有万能的,可以获取Meta,匹配下。自己想办法吧。

(0)

相关推荐

  • Java中URL传中文时乱码的解决方法

    前言 Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 解决办法 1.对要进行URL传递的中文字符进行编码: String message = java.net.URLEncoder.encode("中文字符","utf-8"); 2.在取URL传递中文的页面对字符进行解码: S

  • Java使用默认浏览器打开指定URL的方法(二种方法)

    直接看代码:方法一: 复制代码 代码如下: Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler http://www.jb51.net"); 方法二: 复制代码 代码如下: //判断当前系统是否支持Java AWT Desktop扩展        if(java.awt.Desktop.isDesktopSupported()){            try{                //创建一个UR

  • java网络编程中向指定URL发送GET POST请求示例

    复制代码 代码如下: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import jav

  • java URL乱码的解决办法

    平常我们都是encode 一次,然后直接接受参数 String para = request.getParameter(paramName);  这是因为容器自动能帮我们解码 (DECODE) 一般来说,  encode 的时候,使用的 UTF-8(系统的 编码)  那么解码的时候也是使用   UTF-8的话, 那么不会出现传说中的乱码~ 但是如果 在JSP 页面 使用的UTF-8,但是  容器 解码的时候 使用的 别的编码的话,则有可能出现乱码 这个时候.一般可以使用: String  par

  • java发送url请求获取返回值的二种方法

    下面提供二种方法会使用java发送url请求,并获取服务器返回的值 第一种方法: 复制代码 代码如下: import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFor

  • java解析出url请求的路径和参数键值对类(解析出url请求的路径,包括页面)

    复制代码 代码如下: package RequestPackage; import java.util.HashMap; import java.util.Map; public class CRequest { /** * 解析出url请求的路径,包括页面 * @param strURL url地址 * @return url路径 */ public static String UrlPage(String strURL) { String strPage=null; String[] arr

  • 解决java页面URL地址传输参数乱码的方法

    以下就是为大家分享的URL地址传输参数乱码的解决方法: 1.在tomcat中配置:在tomcat安装目录下面找到conf下面的server.xml找到以下代码段,修改URIEncoding为GBK: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK&q

  • Java在web页面上的编码解码处理及中文URL乱码解决

    编码&解码  通过下图我们可以了解在javaWeb中有哪些地方有转码: 用户想服务器发送一个HTTP请求,需要编码的地方有url.cookie.parameter,经过编码后服务器接受HTTP请求,解析HTTP请求,然后对url.cookie.parameter进行解码.在服务器进行业务逻辑处理过程中可能需要读取数据库.本地文件或者网络中的其他文件等等,这些过程都需要进行编码解码.当处理完成后,服务器将数据进行编码后发送给客户端,浏览器经过解码后显示给用户.在这个整个过程中涉及的编码解码的地方较

  • java 页面url传值中文乱码的解决方法

    中文问题,是在应用中常常遇到的问题. 这将涉及到字符解码操作,我们在应用中常常会用new String(fieldType.getBytes("iso-8859-1"), "UTF-8");等类似的方法去解码.但这种方式受具体应用环境限制,往往在应用部署环境发生改变时,还会出现中文乱码. 在这里介绍一种解决方法,可以在任何应用部署环境下通用.此方法分两步: 1.在客户端用escape(encodeURIComponent(fieldValue))方法编码,例如: 复

  • java中文乱码之解决URL中文乱码问题的方法

    我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不同的操作系统.不同的浏览器.不同的网页字符集,将导致完全不同的编码结果.如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求? 有!这里我主要提供以下几种方法 一.javascript 使用javascript编码不给浏览器插手的机会,编码之

随机推荐