httpclient的json传送数据调用

原创 2016年08月29日 16:37:19

httpClient以post方式发送数据包:

public class aaa {
    public static void main(String[] args) {

          String formNo = "TR123456";
          HashMap<String, Object> notifyInfo = new HashMap<String, Object>();
          String time = String.valueOf(System.currentTimeMillis());
          String asz_access_key = "xxx";
          String content = formNo+time+asz_access_key;
          try {
              String sign = getBASE64Encoder(content);
              notifyInfo.put("referenceNo", formNo);
              notifyInfo.put("time", time);
              notifyInfo.put("sign", sign);
              } catch (Exception e) 
            {
                e.printStackTrace();
            } 
        //本地启动tomcat,调用本地tomcat接受数据
        boolean resultJSON = postJson("http://localhost:8080/testServlet1/MyFirstServlet", notifyInfo);
        System.out.println(resultJSON);

    }

    /**
     * sign加密
     * @return
     * @throws NoSuchAlgorithmException 
     * @throws UnsupportedEncodingException 
     */
    private static String  getBASE64Encoder(String content) throws NoSuchAlgorithmException, UnsupportedEncodingException{
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] bytes = md.digest(content.getBytes("UTF-8"));
        BASE64Encoder base64Encoder = new BASE64Encoder();
        return base64Encoder.encode(bytes);
    }

    /**
     * 以post方式调用httpClient
     * @param uri
     * @param param
     * @return
     */
    public static boolean postJson(String uri, HashMap<String, Object> param) {
        try {  
            CloseableHttpClient httpclient = HttpClients.createDefault();  
            HttpPost httpPost = new HttpPost(uri);   
            //添加http头信息  
            httpPost.addHeader("Content-Type", "application/json");  
            //设置字符集utf-8
            httpPost.getParams().setParameter( "http.protocol.content-charset","utf-8");
            //把数据改为String格式
            String stringObj = JSONObject.toJSONString(param);
            //封装数据
            httpPost.setEntity(new StringEntity(stringObj));     
            //执行调用,返回response
            CloseableHttpResponse response  = httpclient.execute(httpPost);  
            //检验状态码,如果成功接收数据  
            int code = response.getStatusLine().getStatusCode();  
            if (code == 200) {
                return true;
            } 
            }  catch (Exception e) { 
            }
            return false;  
    }
}

服务器方搭建tomcat环境,用servlet接受数据包:


/**
 * Servlet implementation class testServlet1
 */
@WebServlet(name
         = "MyFirstServlet",
         urlPatterns = {"/MyFirstServlet"})
public class testServlet1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public testServlet1() {
        super();
        System.out.println("getgetget");
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         request.setCharacterEncoding("UTF-8");
            //设置可以在页面中响应的内容类型及中文
            response.setContentType("text/html;charset=UTF-8");
            // 接收数据
            ServletInputStream in = request.getInputStream();
            // 这里是前台发起的所有参数的值,包括二进制形式的文件和其它形式的文件
            String str = readLine(in);
            System.out.println(str);
    }

     private static String readLine(ServletInputStream in) throws IOException {
          byte[] buf = new byte[8 * 1024];
          StringBuffer sbuf = new StringBuffer();
          int result;

          do {
           result = in.readLine(buf, 0, buf.length); // does +=
           if (result != -1) {
            sbuf.append(new String(buf, 0, result, "UTF-8"));
           }
          } while (result == buf.length); // loop only if the buffer was filled

          if (sbuf.length() == 0) {
           return null; // nothing read, must be at the end of stream
          }

          int len = sbuf.length();
          if (sbuf.charAt(len - 2) == '\r') {
           sbuf.setLength(len - 2); // cut \r\n
          } else {
           sbuf.setLength(len - 1); // cut \n
          }
          return sbuf.toString();
         }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据

这个技术和xml差不过,主要是服务端代码稍微修改,客户端代码修改部分传递参数就可以完成,但在之前需要导入json所需要的jar包。 PostJson.java代码package PostPager;...

如何调用http接口获取json数据及GET/POST方式调用http接口

接口调用方法,这里返回的是JSONObject: public JSONObject httpsRequest(String requestUrl, String requestMethod, S...

通过HttpClinet类用get方法获得远程接口返回的Json串

public class HttpClientUtil { public static String requestByGetMethod(String s) { Closeab...

Java 通过HttpClient Post方式提交json,并从服务端返回json数据

直接上代码吧,和前面几篇文章都差不多java代码:package PostPager; import java.io.IOException; import java.io.InputStream; ...

如何配置logback使日志输出到mysql数据库

假设已经有logback pom配置 1、引入logback pom配置 1.0.13 ch.qos.logback logback-core ${logback.version} ...

Mac 下 java1.8环境 maven环境配置

Mac 下 java环境 maven环境配置 在mac下配置了java环境和maven环境,发现网上的配置方法各有不同,尝试了各种,现在记录下我配置后总结的方法 java环境配置   1...

JQuery_HighCharts生成图形报表_饼状图(模仿后台传送数据 JSON格式)

这几天博主做了个需求,需要将图形统计的数据以报表的形式显示出来: HighChart 功能: Highcharts 云服务提供简单便捷的方法生成可视化图表,用户不再需要编程基础,只需要复制数据即...

java对象转换为json格式并传送数据到前端

本人现在在做一个实时获取数据的项目  并动态的显示到页面  java后台传送给页面  因为获取到的数据是List   大家都知道,当获取到的数据是一组或者多组数据的时候  都要利用杰克逊的炸包  将j...

springMVC结合json向后台传送数据(一)

本文是本人在学习网络视频springMVC的过程中的学习笔记。 此次笔记是

T100 WebService 调用传送数据说明

  • 2017年12月09日 09:11
  • 315KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:httpclient的json传送数据调用
举报原因:
原因补充:

(最多只允许输入30个字)