下面使用一个小demo来演示如何进行网络通信。
首先,在intelij环境下新建一个工程,我们把它命名为TestHttpGet,在里面新建一个名为test的java类。然后开启一个线程,如下:
public class Test{
public static void main(String[] args) {
run run=new run();
run.start();
}
static class run extends Thread{
@Override
public void run(){
}
}
接着我们使用有道词典给予的API来进行演示。
进入有道词典额度官网,然后进行API申请,填入相关信息之后可以得到一个链接。每个人的链接都不同,而我的链接如下
http://fanyi.youdao.com/openapi.do?keyfrom=httpGetTest090807&key=917336328&type=data&doctype=json&version=1.1&q=welcome
之后,我们来分析一下这个地址。
keyfrom和key都是我们申请API时用的信息,doctype之后时我们希望返回的数据类型,可以选择的有json,xml,jsonp,在这里,我们使用json。
q之后是我们所希望翻译的单词,在这里,我们填入welcome。
首先,我们在线程中新建一个URL,将链接传入到url里,然后使用url的openConnection方法。这里注意使用java.net的URLConnection。
URL url=new URL("http://fanyi.youdao.com/openapi.do?keyfrom=httpGetTest090807&key=917336328&type=data&doctype=json&version=1.1&q=welcome");
java.net.URLConnection urlConnection=url.openConnection();
接着我们创建输入流。
InputStream is=urlConnection.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
之后我们创建一个String和StringBuilder。
String Line;
StringBuilder builder=new StringBuilder();
while ((Line=br.readLine())!=null){
builder.append(Line);
}
使用一个循环来将br中的数据存储。
最后,关闭输入流同时进行输出
br.close();
isr.close();
is.close();
System.out.println(builder.toString());
这是我们要在主方法中开启这个线程,然后观察结果,如下(图并没有截全)