服务端使用request.getInputStream()接收参数

      最近项目业务涉及到服务端(Java)与服务端(c++)通信,我是属于java端,c++端通过拼接http请求头向java端发送数据。发现数据可以接收到,但是数据里如果出现+号会将+号转义为空格。经排查发现是因为请求头的Content-Type属性为application/x-www-form-urlencoded,这样会导致url加密,从而将特殊字符转义使得收到的参数不够准确。所以Content-Type 就不能再使用application/x-www-form-urlencoded类型。应改为text/html或text/plain来避免将特殊字符串转义。但是如此一来发送的参数就不是form键值对的形式了。java端无法用传统的接收方法来接收。这个时候就要直接从request的输入流中去取参数。代码如下:


//获取post参数
StringBuffer sb = new StringBuffer() ;
InputStream is = request.getInputStream();
InputStreamReader isr = new InputStreamReader(is);  
BufferedReader br = new BufferedReader(isr);
String s = "" ;
while((s=br.readLine())!=null){
sb.append(s) ;
}
String str =sb.toString();

   

猜你喜欢

转载自blog.csdn.net/cxfly957/article/details/78785498
今日推荐