package com.lm.core.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
public class HttpClientUtil implements Runnable {
/**
* 不能在主线程中访问网络 所以这里另新建了一个实现了Runnable接口的Http访问类
*/
private String name;
private String password;
private String path;
public HttpClientUtil(String name, String password,String path) {
// 初始化用户名和密码
this.name = name;
this.password = password;
this.path = path;
}
@Override
public void run() {
// 设置访问的Web站点
// 设置Http请求参数
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("password", password);
String result = sendHttpClientPost(path, params, "utf-8");
// 把返回的接口输出
System.out.println(result);
}
/**
* 发送Http请求到Web站点
*
* @param path
* Web站点请求地址
* @param map
* Http请求参数
* @param encode
* 编码格式
* @return Web站点响应的字符串
*/
private String sendHttpClientPost(String path, Map<String, String> map,
String encode) {
List<NameValuePair> list = new ArrayList<NameValuePair>();
if (map != null && !map.isEmpty()) {
for (Map.Entry<String, String> entry : map.entrySet()) {
// 解析Map传递的参数,使用一个键值对对象BasicNameValuePair保存。
list.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
}
}
HttpPost httpPost = null;
CloseableHttpClient client = null;
InputStream inputStream = null;
try {
// 实现将请求 的参数封装封装到HttpEntity中。
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, encode);
// 使用HttpPost请求方式
httpPost = new HttpPost(path);
// 设置请求参数到Form中。
httpPost.setEntity(entity);
// 实例化一个默认的Http客户端
client = HttpClients.createDefault();
// HttpClient client = new DefaultHttpClient();
// 执行请求,并获得响应数据
CloseableHttpResponse httpResponse = client.execute(httpPost);
// 判断是否请求成功,为200时表示成功,其他均问有问题。
System.err.println("status:"+httpResponse.getStatusLine().getStatusCode());
try{
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 通过HttpEntity获得响应流
inputStream = httpResponse.getEntity().getContent();
return changeInputStream(inputStream, encode);
}
}finally{
if( null != httpResponse){
httpResponse.close();
}
if(null != inputStream){
inputStream.close();
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null != client){
try {
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return "";
}
/**
* 把Web站点返回的响应流转换为字符串格式
*
* @param inputStream
* 响应流
* @param encode
* 编码格式
* @return 转换后的字符串
*/
private String changeInputStream(InputStream inputStream, String encode) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
String result = "";
if (inputStream != null) {
try {
while ((len = inputStream.read(data)) != -1) {
outputStream.write(data, 0, len);
}
result = new String(outputStream.toByteArray(), encode);
} catch (IOException e) {
e.printStackTrace();
}finally{
if(outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
return result;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Spring 实现远程访问详解——webservice

共84个文件
java:26个
xml:20个
properties:10个


Spring Web Services 是基于 Spring 框架的 Web 服务框架,主要侧重于基于文档驱动的Web服务,提供 SOAP 服务开发,允许通过多种方式创建 Web 服务。本章利用Apache CXF构建和开发webservice. 1. webservice远程访问流程 1) pom文件引入cxf和wsdl相关包依赖 2) 服务端创建webservice接口 3) 服务端实现webservice接口 4) 服务端配置暴露webservice接口 5) 客户端创建暴露的webservice接口 6) 客户端调用webservice接口
资源推荐
资源详情
资源评论












收起资源包目录




















































































































































共 84 条
- 1
资源评论

- 吴博leo2016-11-02实现了Spring 实现远程访问。例子很好
IT狗探求
- 粉丝: 419
- 资源: 49

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- 很棒的毕业设计、课程设计、练手的java项目-员工工资管理系统(文档+视频+源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-学生选课系统(文档+视频+源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-学生选课成绩信息管理系统(ER图文档+视频+源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-学生信息管理(文档+视频+源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-图书管管理系统(视频+源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-汽车租赁管理系统(详细文档+视频+源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-酒店管理系统(流程图+需求背景数据库+架构说明,视频源码齐全).rar
- 很棒的毕业设计、课程设计、练手的java项目-Oracle飞机订票系统(流程图+需求背景+数据库+架构说明+源码).rar
- 很棒的毕业设计、课程设计、练手的java项目-购物系统项目(文档+视频+源码).rar
- 很棒的毕业设计、课程设计、练手的java项目-电影票购票管理系统(视频+源码).rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
