httpclient发送无参数的post数据

两个问题:
     1、httpclient如何发送一个没有任何参数的post数据呢?
     2、Web工程如何去接收一个无参数的post呢?

起因:
     今天(2014.11.10)在开发中碰到了一个问题,接口提供方提供的接口是要求使用post方式发送数据的,心想这不超简单的一个东西吗?直接post过去不就是了,但是,提供的接口是没有任何参数的,不是类似这种http://api.dutycode.com/data/parm=xxx这种接口,而是http://api.dutycode.com/data。这个地址直接接收post数据。
     话说,当时瞬间心碎了,没接触过啊。。。。
     但是,总归是有解决办法的,既然有这样的接口来接收数据,那么一定可以发送
so

解决办法:很简单
     实现代码如下:
     
public   static  void  main(String[] args)  throws  Exception {
            HttpClient client = HttpClients. createDefault();
            
            HttpPost post =  new  HttpPost( "http://127.0.0.1/report/testPost"  );
            
              //组装一个 json串,用于发送
            JSONObject jsonObj =  new  JSONObject();
            jsonObj.put(  "website"   "http://www.dutycode.com"  );
            jsonObj.put(  "email"   "dutycode@gmail.com"  );
            
            StringEntity entity =  new  StringEntity(jsonObj.toJSONString());
            entity.setContentEncoding(  "UTF-8"  );
            entity.setContentType(  "application/json"  ); //设置为 json数据
            
            post.setEntity(entity);
            
            HttpResponse response = client.execute(post);
            
            HttpEntity resEntity = response.getEntity();
            String res = EntityUtils. toString(resEntity);
            
            System.  out  .println(res);
      }

问题2 Web工程如何去接收一个无参数的post呢?

     既然能发送,那么得想办法实现服务端啊,要不然怎么才能死心。

     so
     测试代码:(注,使用公司内部框架实现,但基本原理是一样的)
     
@Path  ( "testPost"  )
  public  ActionResult getpost()  throws  Exception{
            StringBuilder sb =  new  StringBuilder ();
            InputStream is =  getRequest().getInputStream();
            BufferedInputStream bis =  new  BufferedInputStream(is);
              byte  [] buffer =  new   byte [1024];
              int  read = 0;
              while  ((read=bis.read(buffer)) != -1){
                  sb.append(  new  String(buffer, 0, read,  "UTF-8"  ));
            }
            
            System.  out  .println(sb.toString());
              return  outputStream( "{msg:success}"  );
}

    原理很简单,直接获取到post过来的所有数据流


上面两个结合起来一起测试的话,结果如下:
     第一段代码返回结果:
          
{msg:success}
     第二段代码返回结果:
{"email":"dutycode@gmail.com","website":"http://www.dutycode.com"}


版权所有:《攀爬蜗牛》 => 《httpclient发送无参数的post数据
本文地址:http://www.dutycode.com/post-76.html
除非注明,文章均为 《攀爬蜗牛》 原创,欢迎转载!转载请注明本文地址,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值