java 开发小记:WebClient,获取互联网资源(尤其需关注源的编码)

    所有小记将本着简化编码细节的原则进行,以使得今后开发回避技术的冗余面,而更多关注业务逻辑!

    这段代码将向你介绍几个比较常见但需要注意的问题:

         1,尽量使用本地配置资源,比如 System.getProperty("line.separator") 代替手工输入 “\r\n”,以此解决跨平台问题(Windows、Mac等)。

         2,如何利用程序读取互联网上的文本资源,以及注意其文本编码(Encoding,这是本文的要点)。

         3,使用 StringBuilder 而不是“String 相加”获取一个较大的变长文本,这主要影响程序性能,而不是功能。

    功能极其有限,但对于初学者肯定有其碰壁之处,使用该包装好的类,可使用如下方式获取互联网文本资源:

        WebClient wc = new WebClient();
        String s = wc.getContent("http://localhost:8088/index.jsp", "utf-8", null);
        System.out.println(s);

    如下是 WebClient 类的源码:

package queen.net;

import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class WebClient{
    
    private static String _newLine = System.getProperty("line.separator");
    
    public WebClient(){
    }
    
    public String getContent(String url, String oriEncoding, String targetEncoding) throws IOException{
        URL u = new URL(url);
        URLConnection uc = u.openConnection();
        BufferedReader in;
        if(oriEncoding == null || oriEncoding.length() == 0){
            in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        }
        else{
            in = new BufferedReader(new InputStreamReader(uc.getInputStream(), oriEncoding)); 
        }
        String line;
        StringBuilder sb = new StringBuilder();
        while((line = in.readLine()) != null){
            sb.append(line);
            sb.append(_newLine);
        }
        if(targetEncoding == null || targetEncoding.length() == 0){
            return sb.toString();
        }
        return new String(sb.toString().getBytes(), targetEncoding);
    }
        
}
posted @   陛下  阅读(787)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示