所需jar包:
commons-codec-1.6.jar
commons-io-1.2.jar
commons-logging-1.1.3.jar
fluent-hc-4.3.3.jar
httpclient-4.3.3.jar
httpclient-cache-4.3.3.jar
httpcore-4.3.2.jar
httpmime-4.3.3.jar
点击下载jar包: httpcomponents-client-4.3.3-bin.tar.gz
官网地址:http://hc.apache.org/httpclient-3.x/
HttpClient请求
package com.servser;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import net.sf.json.JSONObject;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.client.DefaultHttpClient;
public class ClientTest {
public static void main(String[] args) throws Exception {
String filePath = "";
String servletPath = "";
//本地影像地址
filePath = "d:/img/000000000163887-2.jpg";
//连接服务端地址参数直接在地址后加上
servletPath = "http://192.168.1.226:8080/ServletDemo/ServletTest?test1=test";
File file = new File(filePath);
FileEntity fileEntity = new FileEntity(file, "text/plain;charset=gbk");
HttpPost httpPost = new HttpPost(servletPath);
httpPost.setHeader("Content-Type","text/xml;charset=gbk");
httpPost.setEntity(fileEntity); //set影像
System.out.println(httpPost);
HttpClient httpclient = new DefaultHttpClient();
//发送请求
HttpResponse response = httpclient.execute(httpPost);
HttpEntity entity = response.getEntity();
if (entity != null) {
//返参
InputStream instream = entity.getContent();
//转换为String
String str = IOUtils.toString(new InputStreamReader(instream));
//因为本实例发送的json格式需要进行解析
JSONObject obj = JSONObject.fromObject(str) ;
System.out.println(obj.get("imageKey"));
System.out.println(obj.get("flag"));
System.out.println(obj.get("detail"));
IOUtils.closeQuietly(instream);
//System.out.println(new String(str.getBytes("utf-8")));
}
}
}
解析Json格式所需JSON-lib jar包
commons-beanutils-1.8.0.jar
commons-collections-3.2.jar
commons-lang-2.4.jar
commons-logging-1.0.4.jar
ezmorph-1.0.4.jar
json-lib-2.2.3-jdk15.jar
服务端(使用的是servlet)
package com.servlet;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
/**
* Servlet implementation class ServletTest
*/
@WebServlet("/ServletTest")
public class ServletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletTest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); //解决中文乱码问题
System.out.println(request.getParameter("test1")); //接参
String imageKey = "3313"; //设置反参
String flag = "N";//设置反参
String detail = "不清晰";//设置反参
//这个是返回简单字符串方式,示例使用的是返回json格式
//response.getWriter().print(detail);
//把接收过来的影像转换为byte数组
byte [] bfile = IOUtils.toByteArray(request.getInputStream());
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
// File dir = new File("d:/");
/*if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在
dir.mkdirs();
}*/
file = new File("d:/img.jpg");
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bfile); //把接收到的影像保存到磁盘
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
//返回参数,使用拼接json格式
response.getWriter().print("{\"imageKey\":\""+imageKey
+"\",\"flag\":\""+flag+"\",\"detail\":\""+detail+"\"}");
}
}