在服务器上执行post方法后,我收到此错误:HTTP / 1.1 302 Found,据我所知,后面有一个重定向。我正在尝试填写登录表单并将其发布到服务器,在这样做之后,我得到了这个重定向。
P.S。表单提交方法是回发..也许这是一个关键?
P.P.S。发布后:
__VIEWSTATE=&__EVENTTARGET=&__EVENTARGUMENT=&ctl00$tbUsername=qwerty&ctl00$tbPwd=qwerty&ctl00$chkRememberLogin=0&ctl00$cmdLogin=Login&ctl00$cmdForgetMe=Forget Me
我明白了:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://website/mobile/(X(1)S(lyslolvcdq13af45juum2vel))/Login.aspx?ReturnUrl=%2fsyspower3%2fmobile%2fdefault.aspx&AspxAutoDetectCookieSupport=1">here</a>.</h2>
</body></html>
加上标题集:
08-02 13:48:39.084: INFO/System.out(1853): ====Header=====
08-02 13:48:39.084: INFO/System.out(1853): Cache-Control
08-02 13:48:39.084: INFO/System.out(1853): private
08-02 13:48:39.084: INFO/System.out(1853): ====Header=====
08-02 13:48:39.084: INFO/System.out(1853): Content-Type
08-02 13:48:39.084: INFO/System.out(1853): text/html; charset=utf-8
08-02 13:48:39.093: INFO/System.out(1853): ====Header=====
08-02 13:48:39.093: INFO/System.out(1853): Expires
08-02 13:48:39.093: INFO/System.out(1853): Tue, 02 Aug 2011 13:48:33 GMT
08-02 13:48:39.093: INFO/System.out(1853): ====Header=====
08-02 13:48:39.093: INFO/System.out(1853): Server
08-02 13:48:39.093: INFO/System.out(1853): Microsoft-IIS/7.5
08-02 13:48:39.093: INFO/System.out(1853): ====Header=====
08-02 13:48:39.093: INFO/System.out(1853): Set-Cookie
08-02 13:48:39.093: INFO/System.out(1853): ASP.NET_SessionId=ebmsrf45wb3mcq45qrgrfe55; path=/; HttpOnly
08-02 13:48:39.093: INFO/System.out(1853): ====Header=====
08-02 13:48:39.104: INFO/System.out(1853): X-AspNet-Version
08-02 13:48:39.104: INFO/System.out(1853): 2.0.50727
08-02 13:48:39.104: INFO/System.out(1853): ====Header=====
08-02 13:48:39.104: INFO/System.out(1853): X-Powered-By
08-02 13:48:39.104: INFO/System.out(1853): ASP.NET
08-02 13:48:39.104: INFO/System.out(1853): ====Header=====
08-02 13:48:39.104: INFO/System.out(1853): Date
08-02 13:48:39.104: INFO/System.out(1853): Tue, 02 Aug 2011 13:48:33 GMT
08-02 13:48:39.104: INFO/System.out(1853): ====Header=====
08-02 13:48:39.104: INFO/System.out(1853): Content-Length
08-02 13:48:39.104: INFO/System.out(1853): 1272
EDITED : 现在我可以看到我必须前往的新位置。但是这是一个新问题,当我将这个新链接输入浏览器时,我进入服务器(我通过登录),但如果我向服务器发出新请求(POST),那么我将被抛回登录页...
P.S。现在我正在使用 HttpURLConnection 作为post方法
答案 0 :(得分:2)
这不是错误。这只是一个非正式的消息,有一个重定向。只有HTTP 4nn和5nn响应才是真正的错误。 HTTP Location
标头中提供了重定向URL。您作为Web客户端,有义务按照HTTP Location
标头中的指定在URL上发送新的GET请求。
String location = response.getLastHeader("Location").getValue();
// ...
更新:那么,您收到的HTTP 302响应没有Location
标头?响应本身的状态代码是什么?
int statusCode = response.getStatusLine().getStatusCode();
如果这是200并且正文包含302消息,那么它肯定是服务器端的错误。网络服务器应该返回状态代码302以及Location
标头。
更新2 :所以,状态代码实际上是200.这是服务器端的一个错误。如果该网站不在您的控制之下,因此您无法修复服务器,则需要将其报告给网站的管理员/维护者。同时,最好的办法是使用一些HTML解析器从响应主体中提取新位置,然后在其上发送新的GET请求。例如,使用Jsoup:
String location = Jsoup.parse(responseHtml).select("h2 a").first().attr("href");
// ...
答案 1 :(得分:0)
代码302
不被视为错误。它是对客户端的指令,它应该继续到Location
响应头指定的位置。客户应遵循该指令并前往指定的位置。
由于此服务器未返回Location
,因此您似乎必须解析响应正文并按照其中指定的URL进行操作。