如何解决 Java 构造 HTTP 请求 POST 的返回值是乱码

2015-04-08 16:34:35 +08:00
 OBoOrange
我尝试 zimuzu.tv 的登陆,post表单,收到的返回值是一堆奇怪的东西
代码:
https://gist.github.com/anonymous/85fda3d944f74de25ac7

比如:
5068 次点击
所在节点    Java
11 条回复
aliuwr
2015-04-08 16:54:04 +08:00
返回的内容是压缩过的,去掉 15 行就好了。
aaaa007cn
2015-04-08 16:55:05 +08:00
conn.setRequestProperty("Accept-Encoding", "gzip, deflate");

看看服务器返回的 http header 中是否指定了 Content-Encoding 头
fising
2015-04-08 16:56:07 +08:00
两个办法:
1. 请求头去掉 gzip
2. 返回的内容 gzip_decode
OBoOrange
2015-04-08 17:12:59 +08:00
@aliuwr 十分感谢~
OBoOrange
2015-04-08 17:13:33 +08:00
@aaaa007cn 是这样的,tks
zhangchioulin
2015-04-08 17:17:42 +08:00
jsp吗?我记得我们是,添加一个类文件,然后改了配置
zhangchioulin
2015-04-08 17:19:47 +08:00
OBoOrange
2015-04-09 22:57:19 +08:00
@zhangchioulin 嗯,都弄好了,我的问题是“Accept-Encoding”造成的

补充一个,就是如果返回值中如果有中文的话,上面代码的26行改为:BufferedReader buffer = new BufferedReader(new InputStreamReader(in, "UTF-8"));

使用UTF-8编码就行了
OBoOrange
2015-04-11 13:17:05 +08:00
@aaaa007cn 你好,麻烦了,我还想请教一个问题~~

1.post账号和密码登陆一个网址( www.zuimadai.com )。通过服务器返回的Set-Cookie获得cookie的值。
2.打开新网页,在构造的请求中加上这个cookie的name-value对,来再这个网站发送心情

服务器返回405,是不是方法错了?

以下是抓包和代码
通过抓包,第二步中我打开的网页是:www.zuidaima.com/mood/create.htm

通过上面抓包信息,我构造的请求如下:
https://gist.github.com/anonymous/1ac552bb22b542de104d
OBoOrange
2015-04-11 13:23:31 +08:00
@aaaa007cn 抱歉上面的代码少了信息输出的4行代码。

//要发送的内容(就像抓包那样看到的)
String BOUNDARY = "------WebKitFormBoundaryfV9cW5irwPumXS5m\r\n";
String newSend = BOUNDARY + "Content-Disposition: form-data; name=\"content\"\r\n\r\n";
newSend += "my test" + BOUNDARY;
newSend += "Content-Disposition: form-data; name=\"file\"; filename=\"\"\r\n";
newSend += "Content-Type: application/octet-stream";
newSend += "------WebKitFormBoundaryfV9cW5irwPumXS5m--\r\n";

//上面那部分接下面的这四行代码
DataOutputStream newOut = new DataOutputStream(newConn.getOutputStream());
newOut.write(send.getBytes());
newOut.flush();
newOut.close();

十分感谢
zonghua
2015-05-08 16:00:43 +08:00
@OBoOrange 请教一下怎么封装类,我用来模拟登录教务系统,里面有很多隐藏表单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/182354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX