两个问题:
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
除非注明,文章均为 《攀爬蜗牛》 原创,欢迎转载!转载请注明本文地址,谢谢