`
yanfeijun
  • 浏览: 26425 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

URLConnection的编码问题

 
阅读更多
前一阵抓网页遇到编码问题,于是写了个方法在每次抓取之前确认一下网页的编码,代码如下:
private static String getEncode(String strUrl){
		String encode = HttpClient.encode;
		InputStream in = null;
		HttpURLConnection con = null;
		try{
			log.debug("检查url编码:" + strUrl);
			URL url = new URL(strUrl);
			con = (HttpURLConnection)url.openConnection();
//			String[] s = strurl.split("/");
			System.out.printf("编码:%s \n" ,con.getContentEncoding());
			if(con.getContentEncoding()!=null){
				return con.getContentEncoding();
			}
			in = con.getInputStream();
			con.setConnectTimeout(5*1000);
			con.setReadTimeout(10*1000);
			
			
			BufferedReader read = new BufferedReader(new InputStreamReader(in));
			String inStr = null;
			
			String reg = "meta http-equiv=\"Content-Type\" content=\".*?charset=(.*?)\"";
			Pattern p = Pattern.compile(reg);
			
			while ((inStr = read.readLine()) != null) {
				Matcher m = p.matcher(inStr);
				if(m.find()){
					encode = m.group(1);
					log.debug("code:" + encode);
					break;
				}
			}
			
		}catch(Exception e){
			log.error(e.getMessage(),e);
		}finally{
			try {
				in.close();
				con.disconnect();
			} catch (Exception e) {
			}
		}
		return encode;
	}

分享到:
评论

相关推荐

    java中用URLConnection_类post方式提交表单

    reqUrl是请求的URL,parameters是参数映射表,recvEncoding是响应的编码方式。 在doGet方法中,首先将参数映射表转换为字符串,并将其追加到reqUrl后面。然后,使用HttpURLConnection类发送GET请求,并读取服务器的...

    java中用URLConnection类post方式提交表单.pdf

    然后,我们使用 URLEncoder 对参数进行编码,避免了编码问题。最后,我们使用 HttpURLConnection 对象发送 GET 请求,并将响应内容存储在 responseContent 变量中。 在 doPost() 方法中,我们使用 ...

    java URLConnection全面解析(通俗易懂,包括cookie操作和上传文件)

    在上面的示例中,我们通过`openConnection()`方法创建了一个`URLConnection`实例,并设置了`Accept-Charset`请求头,以指定客户端期望接收的数据编码方式。如果无需发送参数或请求头,则可以简化为`new URL(url)....

    一个通过Socket或URLConnection传文件的示例

    相比Socket,URLConnection更易于使用,因为它自动处理HTTP协议的细节,如编码、重定向和缓存策略。当需要上传或下载文件时,可以设置OutputStream和InputStream来读写数据,例如使用`setDoOutput(true)`开启写入...

    java URLConnection总结(经典易懂)

    以下是对Java URLConnection的详细总结: 1. **请求类别**: - **GET**:最常见的HTTP请求方法,用于获取服务器上的资源。参数通常附加在URL后面,适合请求静态内容,且易于缓存。 - **POST**:与GET相反,POST...

    java URLConnection全面总结(包括cookie的详细操作).docx

    在这个例子中,`URLEncoder.encode()`用于将参数编码为URL安全的格式,而`setRequestProperty()`设置`Accept-Charset`头来告知服务器数据的编码方式。 三、发送带参数的POST请求 POST请求常用于向服务器提交数据,...

    Android开发使用URLConnection进行网络编程详解

    * 在读取响应数据时,需要注意响应的编码方式,避免乱码问题。 示例代码 ------------ 以下是一个使用 URLConnection 进行网络编程的示例代码: ```java import java.io.IOException; import java.io.InputStream...

    java 用HttpsURLConnection进行传递中文时错误总结

    4. **URL编码**:对于GET请求,URL中的参数可能需要进行URL编码,防止特殊字符引起解析问题。使用`URLEncoder.encode()`方法: ```java String encodedParam = URLEncoder.encode("中文参数", "UTF-8"); String ...

    java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题

    在实际开发中,可能有现成的库或工具(如Apache Commons IO)可以帮助处理编码问题,简化代码。 8. **博文链接**: 博文链接提供了更详细的背景和可能的解决方案,读者可以参考以获取更全面的信息。 总结来说,Java...

    使用UrlConnection实现后台模拟http请求的简单实例

    本实例将详细讲解如何使用`URLConnection`来发送POST或GET请求。 1. **初始化请求数据** 首先,我们需要准备请求的数据。在给定的代码示例中,数据被存储在一个`Map, String>`中,其中键是参数名,值是参数值。...

    解决各种乱码

    针对文件读写产生的乱码,Java提供了FileReader、FileWriter类,它们默认使用平台的默认编码,这可能导致跨平台问题。为了避免这种情况,我们应当使用InputStreamReader和OutputStreamWriter,指定明确的编码,如`...

    java读取远程网页乱码解决方案

    在Java编程中,读取远程网页内容是一项常见的任务,但可能会遇到编码问题导致乱码。本文将深入探讨这个问题,提供有效的解决方案,确保正确地读取和处理远程网页的字符编码。 首先,理解网页编码至关重要。网页通常...

    Java 从网络中读取图片 转换成Base64字符串

    Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上传输。 首先,我们需要了解Java中的网络I/O操作。在Java中,`java.net.URL`类是用于表示统一资源定位符的,它可以用来打开到网络资源...

    Android例子源码使用HttpClient获取网页html源代码.zip

    总结来说,这个例子旨在帮助开发者了解如何在Android环境中使用HttpClient和URLConnection获取远程网页的HTML源代码,同时展示了在GBK编码环境下的处理方式。对于初学者来说,这是一个很好的起点,可以帮助他们理解...

    留言板(java编码)

    为了实现这些功能,开发者可能使用了Java的网络编程API(如Socket和URLConnection)来处理与服务器的通信,Servlet或JSP在服务器端处理请求,以及SQL来操作数据库。布局管理器(如FlowLayout、BorderLayout或...

    Java图形界面获取网页的源代码

    在读取时,需要确保正确设置字符编码,以避免乱码问题。这通常可以通过设置URLConnection的`setEncoding()`方法实现。 6. **多线程**: 由于网络操作可能会阻塞主线程,导致GUI无响应,所以通常会将网络请求放入单独...

    Httpurlconnection

    HttpURLConnection都提供了解决这些问题的方法,例如通过`setInstanceFollowRedirects(boolean)`控制自动重定向,或者使用`SSLSocketFactory`和`TrustManager`处理安全连接。 总的来说,HttpURLConnection是Java中...

Global site tag (gtag.js) - Google Analytics