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();
         }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

HttpClient通过Post方式发送Json数据

服务器用的是Springmvc,接口内容: @ResponseBody @RequestMapping(value="/order",method=RequestMethod.POST) pu...
  • majian_1987
  • majian_1987
  • 2015年08月17日 18:20
  • 87961

HttpClient通过Post方式发送Json数据

服务器用的是Springmvc,接口内容: [java] view plain copy  print? @ResponseBody   @Requ...
  • z69183787
  • z69183787
  • 2017年05月26日 21:45
  • 2656

HttpClientUtil发送json格式请求

package http; import java.util.ArrayList; import java.util.Iterator; import java.util.List; im...
  • wuyongde0922
  • wuyongde0922
  • 2017年04月10日 10:23
  • 1362

用httpPost对JSON发送和接收的例子

用httpPost对JSON发送和接收的例子 HTTPPost发送JSON: private static final String APPLICATION_JSON = "app...
  • u010355144
  • u010355144
  • 2016年08月07日 09:14
  • 3697

C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据

public ActionResult Initialize() { log.Info("Entered ItemHierarchyController - Initialize"); ...
  • KingCruel
  • KingCruel
  • 2015年03月03日 13:17
  • 19803

httpclient post 传json返回json

import java.util.HashMap; import java.util.Map; import org.apache.http.HttpEntity; import org...
  • xingxiupaioxue
  • xingxiupaioxue
  • 2017年05月09日 13:50
  • 921

Http发送Json请求

  • 2017年09月15日 12:58
  • 1.89MB
  • 下载

通过HttpClient获取服务器接口json数据已及解析

转自:http://blog.csdn.net/u014614038/article/details/49800709 1.获取服务器接口数据方法:记得导入httpclient包 http...
  • llwwlql
  • llwwlql
  • 2016年12月10日 17:14
  • 2562

HttpClient用post方式传JSON格式字符串参数

直接上代码段: public String HttpPostWithJson(String url, String json) { String returnValue = "这是默认返回值,接...
  • wwHRestarting
  • wwHRestarting
  • 2015年09月14日 16:53
  • 11114

客户端使用httpclient提交json参数和解析json

// 设置Post服务器的参数,即json对象,并返回该对象。 public static JSONObject setPostPara(Activity activity){ // 获取参数值省略...
  • u012685888
  • u012685888
  • 2015年12月14日 16:38
  • 4072
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:httpclient的json传送数据调用
举报原因:
原因补充:

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