【问题标题】:HttpPost form submission errorHttpPost 表单提交错误
【发布时间】:2015-05-15 07:51:27
【问题描述】:

我正在尝试使用 HttpClient 登录成绩数据库。我向它发送有效的 LogOnDetails.Username 和 LogOnDetails.Password 信息,但每当我提交它时,它始终会发回错误。我不确定它发生在哪里,它可能会成功登录然后挂断,或者它甚至可能无法进入。这是它在请求后输出的html:

output

这是我的代码:

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("https://home-access.cfisd.net/HomeAccess/Account/LogOn");
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    list.add(new BasicNameValuePair("LogOnDetails.Username", "s491670"));
    list.add(new BasicNameValuePair("LogOnDetails.Password","qrrp4ji6t"));
    post.setEntity(new UrlEncodedFormEntity(list));

    HttpResponse response = client.execute(post);
    BufferedReader file = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    PrintWriter pw = new PrintWriter(new FileWriter(new File("output.txt")));
    String line = null;
    while((line = file.readLine())!=null)
        pw.println(line);
    pw.close();

如果有人能对此有所了解,我会永远爱他们。如果需要登录表单的 HTML,请告诉我。谢谢!

【问题讨论】:

  • 你得到什么样的错误? statusCode 是什么 (response.getStatusLine().getStatusCode()) 和消息是什么 (response.getStatusLine().getReasonPhrase())?
  • 500,Alexander 内部服务器错误
  • @user2659185,您应该从问题中删除您的用户名和密码,然后将其标记为“其他”以要求版主删除编辑历史记录。
  • 另外,您应该立即更改该帐户的密码。
  • 问题已解决。就像大家建议的那样,做了一些关于 cookie 和重定向的工作,现在它工作得很好。我爱你们!

标签: java html forms http-post


【解决方案1】:

当表单提交时,会发送以下表单数据:

Form Data
Database:10
LogOnDetails.UserName:sadf
LogOnDetails.Password:sdf

添加以下内容:

list.add(new BasicNameValuePair("Database", "10")); // or 20

你很清楚我无法测试这个。

【讨论】:

  • As you are well aware I can't test this. ???我可以测试一下。该 URL 可访问。
  • 好吧,我不知道问题中的用户名和密码是否正确(我真的希望),他们可能不是,但我也不会尝试。也许can't 应该是won't ;)
  • 我已经测试过了(见下文)^^
  • 我刚刚输入了您建议的编辑,并将我的输出更改为:302 Found 对象已移动

    对象移动到这里

    知道这意味着什么吗?
  • @user2659185,看起来它有效,您必须为后续调用保留 cookie,如果您选择跟随重定向。见亚历山大的回答。
【解决方案2】:

如果你添加@robbmj的补丁,你得到的不是500错误页面,而是一个302(移动),这是一个好的开始:

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/HomeAccess/">here</a>.</h2>
</body></html>

您可以建议 http-client 自己处理重定向,但根据 http-client 的版本,处理重定向的方式不同(他们总是重构此代码)。你用的是哪个版本?

也许302 表示一切都成功了,我现在已经登录了。 ;)

返回的标题:

Cache-Control : private
Content-Type : text/html; charset=utf-8
Location : /HomeAccess/
Server : Microsoft-IIS/7.5
X-AspNetMvc-Version : 4.0
X-AspNet-Version : 4.0.30319
Set-Cookie : ASP.NET_SessionId=hvjw3jqjoaa5ohofaaxu4od1; path=/; HttpOnly
Set-Cookie : .AuthCookie=; expires=Tue, 12-Oct-1999 05:00:00 GMT; path=/; HttpOnly
Set-Cookie : .AuthCookie=0863B972684CC784E4D9D5594354B6F08FF6FF7225836F01A9715D0ABA633042946B032987F7926588610F5FB7C18757CE759338B75E341DF56DB3FB71BC326B3D6E49EA94EEE43B39FCC84BB98F236CA0D63CE668E14434169C6B835FA671DD; path=/; HttpOnly
X-Powered-By : ASP.NET
Date : Thu, 12 Mar 2015 23:37:12 GMT
Content-Length : 129

【讨论】:

  • 我猜302表示登录成功,有没有给你一个会话cookie?
猜你喜欢
  • 2013-02-17
  • 2014-12-22
  • 2019-03-12
  • 2014-05-25
  • 2013-12-26
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多