发表评论
所需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+"\"}"); } }