使用java模拟http请求时关于特殊字符的处理+

今天根据测试需要.使用java模拟http请求,访问web服务,并传参数.看似简单的问题,却因字符问题卡了一下!故有必要记录一下

问题描述:java模拟http测试中在请求的参数中带有+(加号),请求指定url,后台收到的参数总是异常,而在浏览器中却正常

开始以为是一大串字符中可能没有trim() 或去除一些特殊字符.尝试后均失败.没办法只能笨方法对比一下 浏览器访问和JAVA模拟访问 WEB收到的参数对比一下.

原来+变成空格.

后来灵机一动.想到URLEncoder.encode(String s, String enc),专门用来于url打交道的..果不其然....顺便来段部分代码


URL url = new URL(urlStr);
URLConnection connection = url.openConnection();
	//重要.需要编码,防止特殊字符
			String key = 	URLEncoder.encode(m.get("xxx")+"", "utf-8") +"".trim();
  connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  // 发送POST请求必须设置如下两行
	            connection.setDoOutput(true);
	            connection.setDoInput(true);
         out = new PrintWriter(connection.getOutputStream());
	            // 发送请求参数
	            out.print(param);
	            // flush输出流的缓冲
	            out.flush();
	 connection.connect();


如果要获取HTTP交互结果可以参考下面的

inputStream = connection.getInputStream();
			            inputStreamReader = new InputStreamReader(inputStream);
			            reader = new BufferedReader(inputStreamReader);



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值