public void Post() { | |
String urlStr = "http://www.zimuzu.tv/User/Login/ajaxLogin"; | |
String send = "account=xxx&password=xxx&from=loginpage&remember=0"; | |
try { | |
URL url = new URL(urlStr); | |
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); | |
conn.setRequestMethod("POST"); | |
conn.setDoOutput(true); | |
conn.setDoInput(true); | |
conn.setConnectTimeout(10000); | |
conn.setReadTimeout(10000); | |
conn.setRequestProperty("Connection", "keep-alive"); | |
conn.setRequestProperty("Accept-Encoding", "gzip, deflate"); | |
conn.connect(); | |
DataOutputStream out = new DataOutputStream(conn.getOutputStream()); | |
out.write(send.getBytes()); | |
out.flush(); | |
out.close(); | |
InputStream in = conn.getInputStream(); | |
BufferedReader buffer = new BufferedReader(new InputStreamReader(in)); | |
String s; | |
StringBuilder str = new StringBuilder(); | |
while ((s = buffer.readLine()) != null) { | |
str.append(s); | |
} | |
System.out.print(conn.getResponseCode() + "\n" + str.toString()); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} |
![]() |
1
aliuwr 2015-04-08 16:54:04 +08:00 ![]() 返回的内容是压缩过的,去掉 15 行就好了。
|
![]() |
2
aaaa007cn 2015-04-08 16:55:05 +08:00 ![]() conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
看看服务器返回的 http header 中是否指定了 Content-Encoding 头 |
![]() |
3
fising 2015-04-08 16:56:07 +08:00 ![]() 两个办法:
1. 请求头去掉 gzip 2. 返回的内容 gzip_decode |
![]() |
6
zhangchioulin 2015-04-08 17:17:42 +08:00
jsp吗?我记得我们是,添加一个类文件,然后改了配置
|
![]() |
7
zhangchioulin 2015-04-08 17:19:47 +08:00
|
![]() |
8
OBoOrange OP ![]() @zhangchioulin 嗯,都弄好了,我的问题是“Accept-Encoding”造成的
补充一个,就是如果返回值中如果有中文的话,上面代码的26行改为:BufferedReader buffer = new BufferedReader(new InputStreamReader(in, "UTF-8")); 使用UTF-8编码就行了 |
![]() |
9
OBoOrange OP @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 |
![]() |
10
OBoOrange OP @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(); 十分感谢 |