使用Get进行Http通信
--------------siwuxie095
有道翻译官网:http://fanyi.youdao.com/
找到官网页面下方的 有道翻译API,选择 调用数据接口,申请一个 key
(申请内容可随意填写)
申请成功:
自动生成一个对应的数据接口:http://fanyi.youdao.com/openapi.do?keyfrom=siwuxie095-test&key=2140200403&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本
需要指定 <doctype> 和 要翻译的文本
关于 API 的说明:
工程名:TestHttpGet
包名:com.siwuxie095.http
类名:TestGet.java
工程结构目录如下:
代码:
package com.siwuxie095.http;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection;
public class TestGet {
public static void main(String[] args) {
//调用线程 ReadByGet,使用匿名对象 new ReadByGet().start(); }
//创建一个新的线程,这是一个内部的类,继承自 Thread //因为要在主方法(静态)中调用,所以要声明成静态 //不加 static 也可以,需要把 ReadByGet 移出 TestGet,不过这时就不是内部类了 static class ReadByGet extends Thread{
//覆盖父类的run()方法 @Override public void run() { //创建一个URL对象,注意:是 java.net 包中的 //url 即网络路径,传入String //(当在整个链接中使用回车时,链接自动断开,形成多个字符串) //指定doctype类型为:XML,翻译:welcome //(doctype 还可以指定为 json 或 jsonp) //最终返回结果的数据格式是 XML 类型 //有异常抛出,用 try catch 捕获 try {
URL url=new URL("http://fanyi.youdao.com/openapi.do?" + "keyfrom=siwuxie095-test&key=2140200403&type=data" + "&doctype=xml&version=1.1&q=welcome");
//使用openConnection()方法打开链接 //返回值是URLConnection类型,创建以接收返回值 //同样是 java.net 包中的类 //有异常抛出,用 try catch 捕获 URLConnection connection=url.openConnection();
//获取网络连接输入流,返回值是InputStream类型 //创建一个InputStream,接收返回值 InputStream is=connection.getInputStream();
//创建一个InputStreamReader,包装InputStream //如果读取的数据有乱码,在字节流包装成字符流时可以指定编码 InputStreamReader isr=new InputStreamReader(is,"UTF-8"); //InputStreamReader isr=new InputStreamReader(is);
//创建一个BufferedReader,包装InputStreamReader BufferedReader br=new BufferedReader(isr);
//包装完成,将数据全部读取 String line; StringBuilder builder=new StringBuilder(); //当读取的一行数据不为空,则当前内容没有结束,添加到StringBuilder中 while ((line=br.readLine())!=null) { builder.append(line); }
//读取完毕,关闭输入流,后打开的先关闭 br.close(); isr.close(); is.close();
//打印StringBuilder中的所有数据 System.out.println(builder.toString());
} catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
} |
运行一览:
将输出的 XML 数据,复制->粘贴->格式化:
【made by siwuxie095】
posted on 2017-03-31 09:37 siwuxie095 阅读(402) 评论(0) 编辑 收藏 举报