关于java中post方式发送请求的简单却特殊的问题

蒙奇D路飞 2011-11-23 03:26:44
我有一个servlet接收另一个系统的post请求,分析post的内容,进行后续的操作。问题是我post的内容中有一个字段内容是url,例如post的内容为:
http://ip:8080/"?type1=" + type1 +"&str1=" + str1

要命的是str1这个内容是个url,
例如是str1=http://114.80.235.21/2.f4v?1&key=5

接收的url通过getParamenter(“str1”)获取内容不能获取完全的内容http://114.80.235.21/2.f4v?1&key=5,而是获取了
http://114.80.235.21/2.f4v?1,也就是少了“&key=5”,我也知道可以通过getParameter("key")来获取,但是 这个不利于我后续的分析,我想一口气 获取str1的值后续便于统一处理。

像遇到我这种特殊情况应该如何处理呢
...全文
307 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒙奇D路飞 2011-11-23
  • 打赏
  • 举报
回复
我得到怎么是null[Quote=引用 3 楼 sunnylyy 的回复:]

用request.getQueryString()方法得到整个查询字符串,即http://ip:8080后面的全部字符串,然后再解析出str1。
[/Quote]
若干年 2011-11-23
  • 打赏
  • 举报
回复
3楼正解
kouyiSC 2011-11-23
  • 打赏
  • 举报
回复
由于js在传参的时候不同参数之间用&分割。。那&号就如同java中的变量名不能用package关键字一样的道理,如果你无法控制客户端,那就只能分开获取。。。客户端可控制的话,那就换一个分隔符吧。。
creso 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yangchao228 的回复:]

java中如何放到隐藏域?有代码展示一下吗,引用 6 楼 creso 的回复:

建议把URL放进隐藏域里~
[/Quote]
我的意思是对方jsp传值的时候把URL放进隐藏域,但是仔细看了楼主的需求貌似对方网站的内容是不能改的
那么楼上事先对URL进行编码再解码也是不可能的了~
这样的话就直接用String拼接了
蒙奇D路飞 2011-11-23
  • 打赏
  • 举报
回复
java中如何放到隐藏域?有代码展示一下吗,[Quote=引用 6 楼 creso 的回复:]

建议把URL放进隐藏域里~
[/Quote]
qiushi4958 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qiushi4958 的回复:]

引用 4 楼 liutianxiong888 的回复:

你可以用URLEncoder.encode()来编码试下,然后获取后调用URLDecoder.decode();来解码,最终看是不是你想要的数据

+1 这样做起来最简单方便
[/Quote]

System.out.println(URLEncoder.encode("http:www.sina.com.cn?method=123&a=b", "utf-8"));
System.out.println(URLDecoder.decode("http%3Awww.sina.com.cn%3Fmethod%3D123%26a%3Db", "utf-8"));
qiushi4958 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liutianxiong888 的回复:]

你可以用URLEncoder.encode()来编码试下,然后获取后调用URLDecoder.decode();来解码,最终看是不是你想要的数据
[/Quote]
+1 这样做起来最简单方便
creso 2011-11-23
  • 打赏
  • 举报
回复
建议把URL放进隐藏域里~
仲兴轩 2011-11-23
  • 打赏
  • 举报
回复
http://114.80.235.21/2.f4v?1,也就是少了“&key=5”,
那就把&转义呀, 或者替换成其它符号,
接收后再转换下

wan
Spring89 2011-11-23
  • 打赏
  • 举报
回复
你可以用URLEncoder.encode()来编码试下,然后获取后调用URLDecoder.decode();来解码,最终看是不是你想要的数据
sunnylyy 2011-11-23
  • 打赏
  • 举报
回复
用request.getQueryString()方法得到整个查询字符串,即http://ip:8080后面的全部字符串,然后再解析出str1。
Cmexico 2011-11-23
  • 打赏
  • 举报
回复
1.如果你可以操作所说的另一个系统的话,那就在发送请求前对那个特定的url进行转码,然后在servlet中接收并解码。
2.如果你不可以操作所说的另一个系统的话,那就自己写个工具类,按特定格式对你那个url进行解析,组合。
Spring89 2011-11-23
  • 打赏
  • 举报
回复
请问你有没考虑过为str1进行Encoding呢?

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧