gpt4 book ai didi

java - HttpClient POST 提交表单失败+结果字符串被截断(不完整)

转载 作者:行者123 更新时间:2023-12-02 00:51:37 25 4
gpt4 key购买 nike

我正在编写一个应用程序来检查公交车时刻表。因此,我需要将一些数据发布到 html 页面,提交它,并使用 htmlparser 解析结果页面。

虽然可能会问很多,但有人可以帮我确定是否1)这个页面确实支持post/get(我认为是的)2)我需要使用哪些字段?3)如何提出实际请求?

这是我到目前为止的代码:

String url = "http://busspur02.aseag.de/bs.exe?Cmd=RV&Karten=true&DatumT=30&DatumM=4&DatumJ=2010&ZeitH=&ZeitM=&Suchen=%28S%29uchen&GT0=&HT0=&GT1=&HT1=";
String charset = "CP1252";
System.out.println("startFrom: "+start_from);
System.out.println("goTo: "+destination);

//String tag.v

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("HTO", start_from));
params.add(new BasicNameValuePair("HT1", destination));
params.add(new BasicNameValuePair("GTO", "Aachen"));
params.add(new BasicNameValuePair("GT1", "Aachen"));
params.add(new BasicNameValuePair("DatumT", day));
params.add(new BasicNameValuePair("DatumM", month));
params.add(new BasicNameValuePair("DatumJ", year));
params.add(new BasicNameValuePair("ZeitH", hour));
params.add(new BasicNameValuePair("ZeitM", min));

UrlEncodedFormEntity query = new UrlEncodedFormEntity(params, charset);

HttpPost post = new HttpPost(url);
post.setEntity(query);
InputStream response = new DefaultHttpClient().execute(post).getEntity().getContent();

// Now do your thing with the facebook response.
String source = readText(response,"CP1252");
Log.d(TAG_AVV,response.toString());
System.out.println("STREAM "+source);

编辑:
这是我的新代码:

try {
HttpClient client = new DefaultHttpClient();
String getURL = "http://busspur02.aseag.de/bs.exe?SID=5FC39&ScreenX=1440&ScreenY=900&CMD=CR&Karten=true&DatumT="+day+"&DatumM="+month+"&DatumJ="+year+"&ZeitH="+hour+"&ZeitM="+min+"&Intervall=60&Suchen=(S)uchen&GT0=Aachen&T0=H&HT0="+start_from+"&GT1=Aachen&T0=H&HT1="+destination+"";
HttpGet get = new HttpGet(getURL);
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
//do something with the response
Log.i("GET RESPONSE",EntityUtils.toString(resEntityGet));
}
} catch (Exception e) {
e.printStackTrace();
}

但是输出文件被截断。如果我在浏览器中执行相同的请求,我会得到 14 条不同的路线。现在文件突然停止,我只得到 3 条路线......出了什么问题?

我用截止字符串解决了最后一个问题: click here to see my solution

最佳答案

String url = "http://busspur02.aseag.de/bs.exe?Cmd=RV&Karten=true&DatumT=30&DatumM=4&DatumJ=2010&ZeitH=&ZeitM=&Suchen=%28S%29uchen&GT0=&HT0=&GT1=&HT1=";

该表单通过 GET 提交。您还应该通过 GET 提交。您还需要从 HTML 源中收集尽可能多的输入字段( <input><select><textarea><button> 等,以及 type="hidden" 的输入字段!),并将它们指定为请求的参数。在这种自动表单提交中,一个常见的问题是提交按钮的名称/值对。

这个:

<input TYPE="Submit" accesskey="s" class="SuchenBtn" name="Suchen" tabindex="20" VALUE="(S)uchen">

您至少需要添加Suchen=(S)uchen到您的查询字符串。这是服务器端查明是否按下了任何提交按钮以及按下了哪个提交按钮的唯一方法,以便它可以采取相应的操作。

关于java - HttpClient POST 提交表单失败+结果字符串被截断(不完整),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2741755/

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