package Java_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 Get_Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ReadByGet().start();
// 将代码输出 粘贴到 xml 文档之中
// Ctrl+A --> Ctrl+i 调整格式即可
}
// 创建内部类,如果该类的想要被 main 调用,内部类就要声明成 static
// 如果 main 调用的是外部类的方法 则可以不声明为 静态
static class ReadByGet extends Thread{
public void run(){
try {
// 进入 有道 翻译 网页 :http://fanyi.youdao.com/
// 点击 网页下端 API --> 调用接口
// 网络名称、网址,联系方式 等 自定义 --》 申请
// 将得到的 数据接口 字符串 粘贴到 URL 构建函数之中
// http://fanyi.youdao.com/openapi.do?keyfrom=hehehehahaha&key=1686812706&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本
// 修改 doctype 为 xml 和 要翻译的文本 为 hello world
URL url = new URL("http://fanyi.youdao.com/openapi.do?keyfrom=hehehehahaha&key=1686812706&type=data&doctype=xml&version=1.1&q=hello world");
URLConnection con = url.openConnection(); // 打开链接
InputStream is = con.getInputStream();// 获取网络连接输入流
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader br = new BufferedReader(isr);
// 上述步骤将数据封装好之后 即可将数据读取出来了
String line;
StringBuilder strb = new StringBuilder();
while((line=br.readLine())!= null){
strb.append(line);
}
br.close();
isr.close();
is.close();
System.out.println(strb);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package Java_HTTP;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Post_Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
new ReadByPost().start();
// 将代码输出 粘贴到 xml 文档之中
// Ctrl+A --> Ctrl+i 调整格式即可
}
// 创建内部类,如果该类的想要被 main 调用,内部类就要声明成 static
// 如果 main 调用的是外部类的方法 则可以不声明为 静态
static class ReadByPost extends Thread{
public void run(){
try {
// 进入 有道 翻译 网页 :http://fanyi.youdao.com/
// 点击 网页下端 API --> 调用接口
// 网络名称、网址,联系方式 等 自定义 --》 申请
// 将得到的 数据接口 字符串 粘贴到 URL 构建函数之中
// http://fanyi.youdao.com/openapi.do?keyfrom=hehehehahaha&key=1686812706&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本
// 修改 doctype 为 xml 和 要翻译的文本 为 hello world
// url 分为两个部分 分别为 真实地址 http://fanyi.youdao.com/openapi.do
// 以及 向服务器传输的数据 keyfrom=hehehehahaha&key=1686812706&type=data&doctype=xml&version=1.1&q=hello world
// post 方法 分开处理
URL url = new URL("http://fanyi.youdao.com/openapi.do");
HttpURLConnection con = (HttpURLConnection)url.openConnection(); // 打开链接
con.addRequestProperty("encoding","UTF-8"); // 返回数据格式 正确可读
con.setDoInput(true); // 这样可以从网络 获取 数据
con.setDoOutput(true); // 这样可向网络发送数据
con.setRequestMethod("POST"); // 设置连接方式 为 POST
// 设置好 输出 流 -- 一定要在 POST 参数设置之后, 在 input 之前。
OutputStream os = con.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
// 发送 请求
bw.write("keyfrom=hehehehahaha&key=1686812706&type=data&doctype=xml&version=1.1&q=hello world");
// 强制清空缓冲区 输出数据
bw.flush();
// 设置好 输入流 -- 因为 只有发送数据之后才会有接收数据
InputStream is = con.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
// 上述步骤将数据封装好之后 即可将数据读取出来了
String line;
StringBuilder strb = new StringBuilder();
while((line=br.readLine())!= null){
strb.append(line);
}
bw.close();
osw.close();
os.close();
br.close();
isr.close();
is.close();
System.out.println(strb);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 输出 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<youdao-fanyi>
<errorCode>0</errorCode>
<query><![CDATA[hello world]]></query> <!-- 有道翻译 -->
<translation>
<paragraph><![CDATA[hello world]]></paragraph>
</translation> <!-- 有道词典-基本词典 -->
<basic> <!-- 基本释义 -->
<explains>
<ex><![CDATA[你好世界]]></ex>
</explains>
</basic> <!-- 有道词典-网络释义 -->
<web>
<explain>
<key><![CDATA[hello world]]></key>
<value>
<ex><![CDATA[你好世界]]></ex>
<ex><![CDATA[举个例子]]></ex>
<ex><![CDATA[哈罗]]></ex>
</value>
</explain>
<explain>
<key><![CDATA[Hello World]]></key>
<value>
<ex><![CDATA[会写的人多了去了]]></ex>
</value>
</explain>
<explain>
<key><![CDATA[Hello Kitty World]]></key>
<value>
<ex><![CDATA[凯蒂猫气球世界]]></ex>
</value>
</explain>
</web>
</youdao-fanyi>
GET 方法 实现步骤
1. 创建链接;
2. 封装数据流;
3. 打印输入数据。
POST 方法实现步骤
1. 创建 url 连接 ;
2. 设置访问方式和数据传输格式 ;
3. 输入输出允许条件设置 ;
4. 封装输出流;
5. 写入输出数据并强制输出缓冲区;
6 封装输入流;
7. 打印输出输入流数据。