随着webService的崛起,我们开始中会越来越多的使用到访问远程webService服务。当然对于不同的webService框架一般都有自己的client包供使用,但是如果使用webService框架自己的client包,那么必然需要在自己的代码中引入它的包,如果同时调运了多个不同框架的webService,那么就需要同时引入多个不同的client包,这样做是很烦的。Java本生提供访问远程服务的包,在java.net.*下。接下来我们就用Java原生的package访问webService。
1、发送GET请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class ReadByGet implements Runnable {
public void run() {
try {
URL url = new URL(
"http://fanyi.youdao.com/openapi.do?keyfrom=gusi123123&key=1075925116&type=data&doctype=json&version=1.1&q=hello" );//此处访问有道的webService服务,参数都在url中
URLConnection connection = url.openConnection(); //得到一个连接对象
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8" );
BufferedReader br = new BufferedReader(isr); //用于读取返回的数据流
StringBuffer sb = new StringBuffer(); //用于接收返回的数据
String line = null ;
while ((line = br.readLine()) != null ) {
sb.append(line);
}
System.out.println(sb.toString());
br.close(); //关闭各种连接
isr.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
2、发送POST请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
class ReadByPost implements Runnable {
public void run() {
try {
URL url = new URL( "http://fanyi.youdao.com/openapi.do" );//此处通过post访问有道webService
// URLConnection connection = url.openConnection();
HttpURLConnection connection = (HttpURLConnection) url
.openConnection(); //得到一个http的连接对象
connection.addRequestProperty( "encoding" , "UTF-8" );
connection.setRequestMethod( "POST" ); //设置请求方式
connection.setDoInput( true ); //设置可写入
connection.setDoOutput( true ); //设置可读取
OutputStream os = connection.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8" );
BufferedWriter bw = new BufferedWriter(osw); //定义写入流对象
bw.write( "keyfrom=gusi123123&key=1075925116&type=data&doctype=xml&version=1.1&q=hello" );
bw.flush(); //通过写入流对象写入请求参数
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8" );
BufferedReader br = new BufferedReader(isr); //定义读取流对象
StringBuffer sb = new StringBuffer();
String line = null ;
while ((line = br.readLine()) != null ) {
sb.append(line);
} //通过读取流读取返回数据
//关闭各种连接对象
br.close();
isr.close();
is.close();
bw.close();
osw.close();
os.close();
System.out.println(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
} |
通过上面也发现使用java原生的package访问webService比较麻烦,然后我们伟大的apache也给我们提供通用的访问webService的jar包,需要的jar包依赖是:(使用到的类在org.apache.http.*)
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>
3、通过httpclient发送GET请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class ReadByClientGet implements Runnable {
HttpClient client = HttpClients.createDefault();
public void run() {
String uri = "http://www.baidu.com" ;//访问百度
HttpGet get = new HttpGet(uri); //得到请求对象
try {
HttpResponse response = client.execute(get); //执行访问请求
HttpEntity entity = response.getEntity(); //得到返回数据
String result = EntityUtils.toString(entity, "UTF-8" ); //将返回数据输出
System.out.println(result);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
4、通过httpclient发送POST请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class ReadByClientPost implements Runnable {
HttpClient client = HttpClients.createDefault(); //创建一个client对象
public void run() {
try {
String uri = "http://fanyi.youdao.com/openapi.do" ;//post访问有道webService
HttpPost post = new HttpPost(uri); //得到post请求对象
//构造请求参数,通过NameValuePair对象(类似于Map集合)
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add( new BasicNameValuePair( "keyfrom" , "gusi123123" ));
parameters.add( new BasicNameValuePair( "key" , "1075925116" ));
parameters.add( new BasicNameValuePair( "type" , "data" ));
parameters.add( new BasicNameValuePair( "doctype" , "json" ));
parameters.add( new BasicNameValuePair( "version" , "1.1" ));
parameters.add( new BasicNameValuePair( "q" , "java" ));
post.setEntity( new UrlEncodedFormEntity(parameters, "UTF-8" ));
HttpResponse response = client.execute(post); //执行post请求,并且接收返回数据
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8" );
System.out.println(result); //输出返回数据
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
通过上面httpclient只是最简单的基本的访问webService服务。当然还有很多其他细节以及功能可以设计和处理。接下来通过测试方法测试上面的四种访问请求的结果:(输出结果不再粘贴)
1
2
3
4
5
6
7
8
|
public class Main {
public static void main(String[] args) {
// new Thread(new ReadByGet()).start();
// new Thread(new ReadByPost()).start();
// new Thread(new ReadByClientGet()).start();
//new Thread(new ReadByClientPost()).start();
}
} |
相关推荐
"JAVA代码实现远程操作服务器文件" Titulo: JAVA代码实现远程操作服务器文件 JAVA代码实现远程操作服务器文件是指使用JAVA语言实现远程操作服务器文件的功能,实现FTP,共享文件夹操作。该功能可以实现远程服务器...
在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...
(java 中实现对 access 数据库的远程访问) java 中实现对 access 数据库的远程访问是指在 java 中通过远程访问 access 数据库,以满足项目中的需求。在实际项目中,可能会遇到这样的问题:A 服务器上的应用程序需要...
主要实现的是登录服务器操作服务器的中的文件数据,支持读写的操作。主要使用的方法getProperties是设置配置的login(参数一是访问服务器的配置,参数二是设置读还是写)方法是读写连接服务器
在Java和JSP开发中,有时我们需要处理在线编辑器上传的内容,这可能涉及到从Web页面中获取远程图片并将其保存到本地服务器。这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,...
在Java中实现远程监控可以利用Java的多种内置特性,如JMX(Java Management Extensions)、RMI(Remote Method Invocation)以及网络编程API。下面我们将详细探讨如何使用Java来构建一个简单的远程监控系统。 首先...
5. **JMX远程管理**:JMX允许创建管理资源(MBeans),这些资源可以是系统的任何组件,如服务、硬件等。MBeans可以被注册到MBean服务器,然后通过JMX连接器暴露给远程客户端。 ```java MBeanServer mbs = ...
标题 "Java读取远程主机文件" 涉及的核心知识点主要集中在Java远程操作技术,特别是使用SSH(Secure Shell)协议来实现对远程主机的文件访问。在这个场景中,开发人员可能需要从远程服务器上下载文件或者实时读取...
本文件是将 Java 中 通过远程url访问 转换成 HTML 文件 ,通过 dom4j转换成Java对象元素
在IT领域,远程桌面连接是一种常见的技术,它允许用户通过网络访问并控制另一台计算机的桌面环境。在这个项目中,"Java实现远程桌面"是一个使用纯Java编程语言编写的远程桌面解决方案,它使得用户能够在一台计算机上...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。在Java中,实现SSH2连接远程服务器的功能通常需要借助第三方库,如JSch或Apache MINA。本教程将详细介绍如何使用Java通过...
`properJavaRDP`是一个用Java编写的远程桌面协议(RDP)客户端,它提供了对Windows远程桌面服务的访问支持。此项目旨在提供一个稳定且可扩展的平台,以便开发者能够在Java应用程序或Web应用中集成远程桌面功能。 ...
### 使用JAVA实现远程图片批量下载的关键技术点 #### 一、引言 随着互联网的快速发展,用户对于网络资源的需求越来越多样化。其中,批量下载图片的需求尤为显著,尤其是在处理网络相册、电子书籍等内容时。传统的...
本文将深入探讨如何使用Java实现远程控制功能,并结合提供的源代码进行解析。 首先,Java作为一种跨平台的编程语言,拥有丰富的库和API,能够方便地实现网络通信和多线程操作,这为构建远程控制应用提供了坚实的...
Java远程桌面连接是一种技术,允许用户通过网络访问和控制远程计算机的桌面环境,类似于Windows操作系统中的Remote Desktop Protocol (RDP)。在Java中,我们通常使用Java Remote Method Invocation (Java RMI) 或 ...
Java远程调用批处理文件是将Java编程与批处理脚本结合的一种技术,它允许Java程序执行在远程服务器上的批处理任务,而无需人工干预。这通常涉及到网络通信和进程间交互,使得分布式系统能够更加灵活地管理和调度任务...
Java远程传输文件 Java是一种跨平台的语言,在实际开发中,经常需要传输文件,该代码是一个很好的传输文件的例子。本文将对该代码进行详细的解释,从标题、描述、标签和部分内容中生成相关知识点。 一、标题:Java...
客户端通过命名服务找到并访问远程对象。 4. **客户端**:客户端通过RMISystem的命名服务获取远程对象的引用,然后就可以像调用本地对象一样调用远程对象的方法。 在"RemoteControl"这个实例中,可能包含以下几个...
首先,远程桌面连接是Windows操作系统提供的一种功能,允许用户通过网络访问并控制另一台计算机的桌面环境。在Java中,我们不能直接调用RDP的功能,因为Java标准库并不包含直接操作RDP的API。但我们可以借助于操作...
Java网络远程监控系统是一种能够实时收集、分析和管理分布在不同地理位置的计算机系统状态的软件解决方案。这个基于JAVA的网络远程监控系统提供了强大的功能,包括硬件性能监控、软件运行状况检查、网络流量分析以及...