2012-03-10 13 views
0

私は、特定のWebアプリケーションからデータを取得する必要があるAndroidアプリを作成しています。そのWebアプリケーションはServletsとJSPに基づいており、それは私のものではありません。公共図書館のサービスです。このデータを取得する最もエレガントな方法は何ですか?AndroidアプリがサードパーティのJSP&サーブレットからデータを取得する

リクエストと応答を処理するために私自身のサーブレットを作成しようとしましたが、動作させることができません。異なるコンテキストのためにサーブレット転送を行うことはできません。リダイレクトはPOSTメソッドなので動作しません。つまり、ライブラリのサーブレットに簡単にアクセスできる独自のフォームを作成できますが、結果は次のとおりですJSPページ。そのページを文字列などにすることはできますか?どういうわけか、私はできるとは思わない..私は立ち往生している。

これを他の方法で行うことはできますか? PHPなどで?または、私のWebサーバー上でそのjspページを取得し、それから何らかの方法でデータを抽出して(おそらくjQueryを使って)、Androidに送信しますか?私は実際にはそのjspページをブラウザに表示したくない場合は、そのデータを取得して自分のオブジェクトを作成したいと思っています。

答えて

0

プログラムでHTTPリクエストを送信するだけです。これには、Android内蔵のHttpClient APIを使用できます。または、少し低いレベル、Javaのjava.net.URLConnectionUsing java.net.URLConnection to fire and handle HTTP requestsも参照してください)。どちらも、GET/POSTリクエストを送信して、InputStream,byte[]またはStringのように応答を戻すことができます。で最も最も簡単な

次のように、あなたはGETを実行することができます。

InputStream responseBody = new URL("http://example.com").openStream(); 
// ... 

A POSTはHttpClientを用いて行うことが容易である:

List<NameValuePair> params = new ArrayList<NameValuePair>(2); 
params.add(new BasicNameValuePair("name1", "value1")); 
params.add(new BasicNameValuePair("name2", "value2")); 

HttpPost post = new HttpPost("http://example.com"); 
post.setEntity(new UrlEncodedFormEntity(params)); 

HttpClient client = new DefaultHttpClient(); 
HttpResponse response = client.execute(post); 
InputStream responseBody = response.getEntity().getContent(); 
// ... 

あなたがHTMLとして応答を解析する必要がある場合(しかし、私は "公共図書館サービス"(それは本当にパブリックなのでしょうか?)が、XMLやJSONサービスを提供していないのではないかと思っています。JsoupはHTMLをトラバースして操作する人生の節約者かもしれません。 jQueryの方法。途中でPOSTリクエストを送信することもできますが、HttpClientの場合ほど細かくはできません。

+0

ありがとうございます!やってみます! Jsoupは私が実際に使うことができるもののように聞こえる。 IIRC、私はHtppClientを試してみましたが、何を試しても機能しませんでしたが、それはずっと前です。十分に時間を見つけたら、もう一度試してみてください。 – Ivan

+0

ああ、基本的にこれは私がすべきデータはbisis.bgb.rs/index.jsp?locale=enから入手できます。これは基本的にこのライブラリの検索エンジンですが、XMLやJSONは表示されていません。それはまったく普通のサーブレットアプリケーションのように思えますが、他のアプリケーション用のデータを提供するような、魅力的で「現代的」なものはありません:) – Ivan

関連する問題