2010-04-30 1 views
0

Я пишу приложение, чтобы проверить расписание автобусов. Поэтому мне нужно отправить некоторые данные на html-страницу, отправить ее и проанализировать полученную страницу с помощью htmlparser.HttpClient POST не может отправить форму + результирующая строка отключена (неполная)

Хотя может быть предложено много, может ли кто-нибудь помочь мне определить, если 1) эта страница поддерживает сообщение/получить (я думаю, это так) 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); 

EDIT:
Это мой новый код:

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

ответ

2
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. Вам также необходимо собрать столько полей ввода (<input>, <select>,, <button> и т. Д., А также из type="hidden"!) Из источника HTML и указать их как параметры вашего запроса. Обычным случаем, которое было упущено в таком виде автоматических форм, является пара имя/значение кнопки submit.

Это один:

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

Вы должны добавить по крайней мере Suchen=(S)uchen в строку запроса. Это единственный способ для серверной стороны выяснить, была ли нажата кнопка отправки, и если да, то какая из них, чтобы она могла принять соответствующие меры.

+0

спасибо за ваше объяснение. Я провел некоторое исследование, и теперь мой код выглядит выше. ошибка – MJB

1

Guten Tag!

В следующем отрывке:

<td class="Start3"> 
      <input type="text" name="GT0" value="" tabindex="1" /> 
</td 

«класс = Пуск3» инструктирует браузер для форматирования таблицы antry определенным образом. «& GT0 = ваш текстовый фрагмент на« GET »url, сгенерированном в этой форме.

+0

спасибо за ваше объяснение. Я провел некоторое исследование, и теперь мой код выглядит выше. У меня все еще есть ошибка. – MJB