使用java.nio及其子包中的类SocketChanel完成如下功能:读取www.baidu.com等网页的内容,打印到控制台,避免中文乱码问题。
来源:互联网 发布:南沙人工智能产业园 编辑:程序博客网 时间:2024/05/31 20:51
package test;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
public class NioHtmlReader {
private Charset charset = Charset.forName("GBK");// 创建GBK字符集
private SocketChannel channel;
public void readHTMLContent(String url, int port) {
try {
InetSocketAddress socketAddress = new InetSocketAddress(url, port);
// 1 打开连接
channel = SocketChannel.open(socketAddress);
// 2 发送请求,使用GBK编码
channel.write(charset.encode("GET" + "/HTTP/1.1" + "\r\n\r\n"));
// 3 读取数据, 创建1024字节的缓冲
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (channel.read(buffer) != -1) {
// flip方法在读缓冲区字节操作之前调用
buffer.flip();
// 使用Charset.decode方法将字节转换为字符串
System.out.println(charset.decode(buffer));
// 清空缓冲
buffer.clear();
}
} catch (Exception e) {
System.err.println(e.toString());
} finally {
if (channel != null) {
try {
channel.close();
} catch (IOException e) {
}
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new NioHtmlReader().readHTMLContent("www.baidu.com", 80);
}
}
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
public class NioHtmlReader {
private Charset charset = Charset.forName("GBK");// 创建GBK字符集
private SocketChannel channel;
public void readHTMLContent(String url, int port) {
try {
InetSocketAddress socketAddress = new InetSocketAddress(url, port);
// 1 打开连接
channel = SocketChannel.open(socketAddress);
// 2 发送请求,使用GBK编码
channel.write(charset.encode("GET" + "/HTTP/1.1" + "\r\n\r\n"));
// 3 读取数据, 创建1024字节的缓冲
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (channel.read(buffer) != -1) {
// flip方法在读缓冲区字节操作之前调用
buffer.flip();
// 使用Charset.decode方法将字节转换为字符串
System.out.println(charset.decode(buffer));
// 清空缓冲
buffer.clear();
}
} catch (Exception e) {
System.err.println(e.toString());
} finally {
if (channel != null) {
try {
channel.close();
} catch (IOException e) {
}
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new NioHtmlReader().readHTMLContent("www.baidu.com", 80);
}
}
0 0
- 使用java.nio及其子包中的类SocketChanel完成如下功能:读取www.baidu.com等网页的内容,打印到控制台,避免中文乱码问题。
- 火狐打开百度首页自动跳转到如下网页:http://www.baidu.com/baidu.html?from=noscript
- 使用java.nio读取网页的程序
- 使用java.nio读取网页的程序
- java读取txt目标文件中的数据打印到控制台
- Java Web乱码-->读取网页中的数据(如输入框中的内容)写到数据库中乱码
- Qt把ping www.baidu.com之后的内容的内容输出到一个名为output的文档
- java程序读取文件内容打印控制台
- java Scanner类读取控制台输入内容再输出乱码
- 使用guava读取ANSI类型的文件,避免中文乱码
- 使用baidu的api完成汉译英功能
- JAVA读取文件,避免中文乱码。
- JAVA读取文件,避免中文乱码
- JAVA读取文件,避免中文乱码
- JAVA读取文件,避免中文乱码
- Java读取txt格式文件打印到控制台
- java 控制台输出读取到的.xls文件内容
- Java IO操作——BufferedReader(缓冲区读取内容,避免中文乱码)
- UI05 _ 分段控件 -- UISegmentedControl
- UIImageView+GestureRecognizer
- Count Complete Tree Nodes(****)
- 一个ViewController里有三个TableView,分别为省市区,逐级跳转
- php 源码安装没有gd库
- 使用java.nio及其子包中的类SocketChanel完成如下功能:读取www.baidu.com等网页的内容,打印到控制台,避免中文乱码问题。
- Aragorn's Story - HDU 3966 树链刨分
- TCP通讯程序设计
- 二进制地址的伙伴地址
- vim配色方案
- Java打地鼠小游戏
- 关于Spring框架的分析
- 互联网协议入门(2)
- Python pyc格式解析