两个问题:
1、httpclient怎样发送一个没有不论什么參数的post数据呢?
2、Webproject怎样去接收一个无參数的post呢?
起因:
今天(2014.11.10)在开发中碰到了一个问题。接口提供方提供的接口是要求使用post方式发送数据的。心想这不超简单的一个东西吗?直接post过去不就是了。可是,提供的接口是没有不论什么參数的。不是类似这样的http://api.dutycode.com/data/parm=xxx这样的接口,而是http://api.dutycode.com/data。这个地址直接接收post数据。
话说,当时瞬间心碎了,没接触过啊。。。
。
可是,总归是有解决的方法的。既然有这种接口来接收数据,那么一定能够发送
so
解决的方法:非常easy
实现代码例如以下:
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" , "[email protected]" ); 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 Webproject怎样去接收一个无參数的post呢?
既然能发送,那么得想办法实现服务端啊,要不然怎么才干死心。
so
測试代码:(注,使用公司内部框架实现。但基本原理是一样的)
@Path ("testPost" ) public ActionResult StringBuilder sb InputStream is = getRequest().getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); byte [] int read while ((read=bis.read(buffer)) sb.append( new String(buffer, } System. out .println(sb.toString()); return outputStream("{msg:success}" ); } |
原理非常easy。直接获取到post过来的全部数据流
上面两个结合起来一起測试的话,结果例如以下:
第一段代码返回结果:
{msg:success} |
第二段代码返回结果:
{"email":"[email protected]","website":"http://www.dutycode.com"} |
w=80&m=5&text=http://www.dutycode.com/post-76.html" align="left" style="border:0px">版权全部:《攀爬蜗牛》 => 《httpclient发送无參数的post数据》
本文地址:http://www.dutycode.com/post-76.html
除非注明。文章均为 《蜗牛爬》 原版的,欢迎转载!地址转载本文,请注明,谢谢
版权声明:本文博客原创文章,博客,未经同意,不得转载。