gpt4 book ai didi

java - 来自 java 应用程序的 HTTP POST

转载 作者:行者123 更新时间:2023-12-01 12:17:55 25 4
gpt4 key购买 nike

我正在尝试使用 java 应用程序发布到 html 表单。该表单位于页面上,如果重要的话,带有 html 扩展名(例如 http://www.domain.tld/somepage.html ),持有如下表单:

<Form method="POST">
<input type="hidden" name="op" value="checkfiles">
<Textarea name="list" rows=12 style="width:100%;font:12px Arial"></Textarea>
<br><input type="submit" name="process" value="Check">
</Form>

我尝试使用 Apache HTTPComponents,但到目前为止我的尝试尚未成功。这是我正在使用的函数:

private static void submit(String text) throws Exception{

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.domain.tld/somepage.html");

List <NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("list", text));

httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

HttpResponse response = httpclient.execute(httppost);

BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));

StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}

System.out.println(result.toString());

}

出于某种原因,这会返回 http://www.domain.tld/ 的页面。请帮忙。

最佳答案

首先(但与问题无关)使用 EntityUtils.toString() 来获取页面内容作为 String,而不是手动读取它。还请记住使用 EntityUtils.consume() 来消费实体以释放资源(到池的连接等)

对于这个问题,你的代码看起来很好。根据我的经验,由于各种原因,您提交的页面会将您重定向到主页。我能想到的一些是

  1. 您的发布参数错误 - 远程系统威胁您的请求格式错误,并将您重定向到主页(这是正常的)
  2. 您缺少一些应从页面解析的输入参数(例如 .NET 系统的 __VIEWSTATE)
  3. 您应该首先GET您的页面来初始化 session - 例如。接收 session cookie等。
  4. 您发帖到了错误的网页
  5. 您的客户端没有某些 header ,例如。客户名称

可能还有其他问题,但这些是我遇到的最常见的问题。在我的实践中,我已经为许多网站实现了页面管理器。您必须分析该帖子是如何从网络浏览器执行的。我强烈建议使用带有 Firebug 扩展的 Firefox,并仔细检查发生了什么。基本上,您几乎总是必须重新创建浏览器的确切行为,包括阅读页面、初始化 session 、保存 cookie 等。

编辑

您的表单有 3 个输入,但您仅提交 list。尝试同时提交 op 和(可选)process 字段。

关于java - 来自 java 应用程序的 HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26875224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com