package com.web.util;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
public class ServiceInterfaceLinkTool{
public String invokeServiceMethod(String url,Map<String,String> params,Map<String, String> header) throws Exception{
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
HttpEntity entity = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpPost httpost = new HttpPost(url); //引号中的参数是:action的地址
if (header!=null&&header.size()>0) {
for (String key : header.keySet()) {
httpost.setHeader(key,header.get(key));
}
}
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
for (String keyItem : params.keySet()) {
String key=keyItem;
String value=params.get(keyItem);
nvps.add(new BasicNameValuePair(key,value));
}
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); //将参数传入post方法中
response = httpclient.execute(httpost); //执行
StatusLine stateLine=response.getStatusLine();
int statusCode=stateLine.getStatusCode();
if (statusCode!=200) {
httpclient.getConnectionManager().shutdown();
return "";
}
entity = response.getEntity(); //返回服务器响应
try{
String responseString = null;
if (entity != null) {
responseString = EntityUtils.toString(entity);
}
return responseString;
} finally {
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
}
}
public String invokeServiceMethod(String url) throws Exception{
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
HttpEntity entity = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpGet httpGet = new HttpGet(url); //引号中的参数是:action的地址
response = httpclient.execute(httpGet); //执行
entity = response.getEntity(); //返回服务器响应
// response.getStatusLine();
try{
String responseString = null;
if (entity != null) {
responseString = EntityUtils.toString(entity);
}
return responseString;
} finally {
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
}
}
public Boolean urlCheck(String url) throws ClientProtocolException, IOException{
if (StringUtils.isBlank(url)) {
return false;
}
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpGet httpGet = new HttpGet(url); //引号中的参数是:action的地址
response = httpclient.execute(httpGet); //执行
StatusLine stateLine=response.getStatusLine();
int statusCode=stateLine.getStatusCode();
if (statusCode==200) {
return true;
}
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
return false;
}
/* public String invokeServiceMethod(String url,Map<String,String> params) throws Exception{
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
HttpEntity entity = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpPost httpost = new HttpPost(url); //引号中的参数是:action的地址
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
for (String keyItem : params.keySet()) {
String key=keyItem;
String value=params.get(keyItem);
nvps.add(new BasicNameValuePair(key,value));
}
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); //将参数传入post方法中
response = httpclient.execute(httpost); //执行
entity = response.getEntity(); //返回服务器响应
try{
String responseString = null;
if (entity != null) {
responseString = EntityUtils.toString(entity);
}
return responseString;
} finally {
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
}
}*/
public String invokeServiceMethod(String url,Map<String,String> params,Map<String, String> header,File[] files,String propName) throws Exception{
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
HttpEntity entity = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpPost httpost = new HttpPost(url); //引号中的参数是:action的地址
if (header!=null&&header.size()>0) {
for (String key : header.keySet()) {
httpost.setHeader(key,header.get(key));
}
}
MultipartEntity multipartEntity=new MultipartEntity();
for (String keyItem : params.keySet()) {
multipartEntity.addPart(keyItem, new StringBody(params.get(keyItem), Charset.forName("UTF-8")));
}
if (files!=null) {
for (File file : files) {
multipartEntity.addPart(propName, new FileBody(file));
}
}
httpost.setEntity(multipartEntity); //将参数传入post方法中
response = httpclient.execute(httpost); //执行
entity = response.getEntity(); //返回服务器响应
try{
String responseString = null;
if (entity != null) {
responseString = EntityUtils.toString(entity);
}
return responseString;
} finally {
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
}
}
/**
* 执行webservice接口
* @param url 接口地址
* @param params 参数
* @param files 需上传的文件
* @param propName 上传文件对应的name键
* @return
* @throws Exception
*/
public String invokeServiceMethod(String url,List<Map<String, String>> params,File[] files,String propName) throws Exception{
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
HttpEntity entity = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpPost httpost = new HttpPost(url); //引号中的参数是:action的地址
MultipartEntity multipartEntity=new MultipartEntity();
for (Map<String, String> map : params) {
for (String keyItem : map.keySet()) {
multipartEntity.addPart(keyItem, new StringBody(map.get(keyItem), Charset.forName("UTF-8")));
}
}
for (File file : files) {
multipartEntity.addPart(propName, new FileBody(file));
}
httpost.setEntity(multipartEntity); //将参数传入post方法中
response = httpclient.execute(httpost); //执行
entity = response.getEntity(); //返回服务器响应
try{
String responseString = null;
if (entity != null) {
responseString = EntityUtils.toString(entity);
}
return responseString;
} finally {
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
}
}
public String invokeServiceMethod(String url, Map<String, String> params) throws Exception {
return invokeServiceMethod(url, params, new HashMap<String, String>());
}
public String invokeServiceMethod(String url,Map<String,String> params,Map<String, String> header,HttpServletResponse httpServletResponse) throws Exception{
HttpClient httpclient=new DefaultHttpClient();
HttpResponse response = null;
HttpEntity entity = null;
httpclient.getParams().setParameter(
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); //设置cookie的兼容性
HttpPost httpost = new HttpPost(url); //引号中的参数是:action的地址
if (header!=null&&header.size()>0) {
for (String key : header.keySet()) {
httpost.setHeader(key,header.get(key));
}
}
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
for (String keyItem : params.keySet()) {
String key=keyItem;
String value=params.get(keyItem);
nvps.add(new BasicNameValuePair(key,value));
}
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); //将参数传入post方法中
response = httpclient.execute(httpost); //执行
StatusLine stateLine=response.getStatusLine();
int statusCode=stateLine.getStatusCode();
if (statusCode!=200) {
httpclient.getConnectionManager().shutdown();
return "错误";
}
entity = response.getEntity(); //返回服务器响应
try{
if (entity != null&&entity.isStreaming()) {
//设置相应头
for (Header nameValuePair : response.getAllHeaders()) {
httpServletResponse.setHeader(nameValuePair.getName(), nameValuePair.getValue());
}
byte[] temp = new byte[1024*10];
int num=0;
InputStream in = entity.getContent();
while ((num=in.read(temp))>0) {
httpServletResponse.getOutputStream().write(temp,0,num);
}
}
} finally {
if (httpclient!=null)
httpclient.getConnectionManager().shutdown(); // release connection gracefully
}
return null;
}
}