--------------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 的说明:

 
 

 
 

 
 

 
 

 
 

 
 

 
 

工程名:TestHttpPost

包名:com.siwuxie095.http

类名:TestPost.java

 
 

 
 

 
 

工程结构目录如下:

 
 

 
 

 
 

 
 

代码:

 
 

package com.siwuxie095.post;

 
 

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;

 
 

public class TestPost {

 

/**

* 先创建一个URL,打开连接,

* 将 URLConnection 转换成 HttpURLConnection

* 设置连接的所有参数:字符集、可以输入输出、请求方法

* 接着获取输出流,将向服务器传输的数据一次性写出

* 写出之后再获取输入流,再从输入流中读取数据

*

* @param args

*/

 
 

public static
void main(String[] args) {

 
 

//调用线程:ReadByPost 使用匿名对象

new ReadByPost().start();

}

 
 

}

 
 

//创建一个线程:ReadByPost

class ReadByPost extends Thread{

 

//复写 run()方法

@Override

public
void run() {

 

try {

 

//创建一个URL对象,属于 java.net 包中的

//传入一个网络连接的地址

//使用Post方法来读取Http数据,传入的URL地址和Get方法不同

//

//(1)「http://fanyi.youdao.com/openapi.do」
是真实的URL,单纯的网址

//(2)而问号?后面的
「keyfrom=siwuxie095...要翻译的文本」
都是向服务器传输的数据,

// 使用网络连接的输出流进行输出

//

//整合在一起就是一个整体的URL,不过这里传入(1)

//有异常抛出,使用 try catch 捕获

URL url=new URL("http://fanyi.youdao.com/openapi.do");

 

//使用openConnection()方法打开链接

//返回值是URLConnection类型,因为是使用Post方法,

//需要创建一个HttpURLConnection 接收返回值

//HttpURLConnection 继承自URLConnection,需要强制类型转换

//同样是 java.net 包中的类

//有异常抛出,用 try catch 捕获

HttpURLConnection connection=(HttpURLConnection) url.openConnection();

 

//为 connection 设置参数:

//(注意:将所有参数设置完毕后再做其他操作)

//设置编码为 UTF-8

connection.addRequestProperty("encoding", "UTF-8");

//使用 setDoInput() 传入 true,则当前的 connection 就能从网络获取数据

connection.setDoInput(true);

//同样将 setDoOutput()也设置为 true,就可以向服务器传输数据

connection.setDoOutput(true);

//将 connection 的访问方式设置为Post

connection.setRequestMethod("POST");

 

 

 

 

//connection建立连接之后,要先获取输出流和再获取输出流

 

 

//获取输出流,创建OutputStream接收返回值

OutputStream os=connection.getOutputStream();

//包装

OutputStreamWriter osw=new OutputStreamWriter(os);

//再包装

BufferedWriter bw=new BufferedWriter(osw);

 

 

//先对服务器进行输出(向服务器传输数据,发送请求)

//使用BufferedWriter的write()方法,这里传入(2),前面加不加
问号 ? 均可

//指定doctype的类型为 XML,翻译:welcome

bw.write("keyfrom=siwuxie095-test&key=2140200403&type=data&"

+ "doctype=xml&version=1.1&q=welcome");

//强制输出 flush

bw.flush();

 

 

 

//获取输入流,创建InputStream接收返回值

InputStream is=connection.getInputStream();

//包装

InputStreamReader isr=new InputStreamReader(is);

//再包装

BufferedReader br=new BufferedReader(isr);

 

 

//接着读取数据(读取从服务器返回的XML数据)

String line;

StringBuilder builder=new StringBuilder();

//如果line不为空,将其填充到builder中

while ((line=br.readLine())!=null) {

builder.append(line);

}

 

 

//读取完毕,关闭流

bw.close();

br.close();

osw.close();

isr.close();

os.close();

is.close();

 

//输出读取到的数据

System.out.println(builder.toString());

 

 

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

 

 

}

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

将输出的 XML 数据,复制->粘贴->格式化:

 
 

 

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

使用Post进行Http通信的更多相关文章

  1. 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信

    接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...

  2. 笔记:Binder通信机制

    TODO: 待修正 Binder简介 Binder是android系统中实现的一种高效的IPC机制,平常接触到的各种XxxManager,以及绑定Service时都在使用它进行跨进程操作. 它的实现基 ...

  3. .NET 串口通信

    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...

  4. MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信

    MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...

  5. 多线程的通信和同步(Java并发编程的艺术--笔记)

    1. 线程间的通信机制 线程之间通信机制有两种: 共享内存.消息传递.   2. Java并发 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式执行,通信的过程对于程序员来说是完全透 ...

  6. 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

    搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...

  7. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  8. TCP通信

    //网络套接字编程实例,服务器端,TCP通信. #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") #inc ...

  9. JAVA通信系列一:Java Socket技术总结

    本文是学习java Socket整理的资料,供参考. 1       Socket通信原理 1.1     ISO七层模型 1.2     TCP/IP五层模型 应用层相当于OSI中的会话层,表示层, ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. Android中如何禁止音量调节至静音

    Android中音量按键在调低音量时,如果一直按住Down按钮不放,则系统将音量跳到最小后,又自动调节到静音状态.这个机制和iPhone是不同的,iPhone中无论你怎么按Volume-按钮,只能调到 ...

  2. 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。

    转载https://www.cnblogs.com/zhang-bo/p/9138151.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建 ...

  3. 配合Jenkins自动化构建,bat脚本(二)

    批量通过模板,拷贝文件,然后替换模板文件中的标记位为预制的内容. 1 Set servicePath=Ehong.MedicareReview.Web\地区配置\ Set webPath=Ehong. ...

  4. @media screen页面自适应尺寸!!

    @media screen and (max-width:360px){body,input,select{font-size:38%}} @media screen and (min-width:3 ...

  5. BZOJ- 2733: 永无乡 (并查集&线段树合并)

    题意:给定N个节点,K次操作,操作有两种,1是合并两个集合,2是求某个集合的第K大(从小到大排序). 思路:合并只要启发式即可.此题可以用线段树,保存1到N的排序的出现次数和. 复杂度O(NlogN) ...

  6. stack容器

    一.stack特性 stack是一种先进后出(first in last out,FILO)的数据结构,它只有一个出口,stack只允许在栈顶新增元素,移除元素,获得顶端元素,但是除了顶端之外,其他地 ...

  7. Java邮箱发送——企业版

    企业版邮箱发送工具类 import java.security.Security; import java.util.Properties; import javax.mail.Authenticat ...

  8. nginx之 nginx-1.9.7 编译安装、理论简介

    nginx是一个web网站常用的高性能http和反向代理服务器,其具有较好的并发能力,被网易.百度.腾讯.新浪等网站广泛使用. 一. 理论简介 1.首先弄清楚正向代理和反向代理 正向代理:代理客户端, ...

  9. Order By操作

    本文转载自:http://www.cnblogs.com/vingi/articles/2450482.html 适用场景:对查询出的语句进行排序,比如按时间排序等等. 说明:按指定表达式对集合排序: ...

  10. Oracle 数据库加密

    数据加密 动态数据(data in motion)和静态数据(data at rest),除了手动加密,其他的加密都需要oracle企业版的高级加密(额外收费——)  1 静态数据加密 Example ...