質問: Androidとサーバを連携させたくて色々と調べていたのですが、サーバなどに関する知識が無く、まだ分からない点がいくつかあるのですみませんが少々質問させていただきたいです。 サーバにアップロードした自作のテキストファイルを取得してAndroidアプリの画面に表示させるというようなことを行いたいのですが、この場合Androidと連携させるためのサーバは無料のレンタルWebサーバなどでもよろしいでしょうか? そうであれば実装の手順としては、個人的に以下のようになるかと思います。 1. テキストファイルをサーバにアップロードする。 2. `HttpURLConnection`を使ってサーバからデータを取得する。 しかし`HttpURLConnection`ではURLを指定してそのURL上のデータを取得するという流れだったので、ということはサーバにアップロードしたテキストファイルデータが並んでいるWebページを一つ作成する必要があるでしょうか......? また、調べているとPHPという単語が結構出てきたのですが、サーバと連携する際にはPHPを使わなければならないのでしょうか? 色々と分からないことが多くて申し訳ないのですが、ご指導していただけると幸いです。 すみませんが、宜しくお願いします。
回答: 簡単に言うと、HTTPを話すサーバ(一般的にWebサーバと呼びます)においたファイル一つ一つに、その場所を特定するためのURLが決定します。 というURLであれば、通常はWebサーバに設定されたそのサーバのどこかに、hoge.htmlというファイルが置かれているはずです。つまり、 ``` /home/yoichiro/webserver/documents という場所をRootとする ``` というようにWebサーバに設定しておけば、 ``` /home/yoichiro/webserver/documents/hoge.html => http://your.server/hoge.html ``` というURLでそのファイルを特定(=取得)できるようになります。 そして、URLで指定されたものをHTTPプロトコルで取得してくれるクラスが、HttpURLConnectionです。.htmlというURLを指定してHttpURLConnectionクラスを使えば、hoge.htmlファイルの内容が得られます。 > > しかしHttpURLConnectionではURLを指定してそのURL上のデータを取得するという流れだったので、ということはサーバにアップロードしたテキストファイルデータが並んでいるWebページを一つ作成する必要があるでしょうか......? > > > ファイルをサーバにアップロードした場所がWebサーバで設定したディレクトリ(上記の/home/.../documents)であれば、そのファイルのURLが決定しますので、HttpURLConnectionクラスで取得可能です。複数のファイルを取得したければ、ファイルそれぞれにURLが決定されますので、そのURLの個数だけHttpURLConnectionクラスを利用してファイルを取得する処理を繰り返せば良いと思います。 ただし、Androidアプリ側からは各ファイルのURLがわからない、という状況であれば、仰るとおり取得対象のURLが書かれたファイルを用意して、そのファイルをまずAndroidアプリが取得して、その内容に書かれた各URLを再度取得する、という実装にすれば良いと思います。 PHPなどのサーバ側の言語を使う利点としては、上記の「URLが書かれたファイル」を事前に作成しておくことなく、URLのListを直接Android側に返却する(動的に返すっていう表現しますね)、ということがあります。 > > サーバにアップロードした自作のテキストファイルを取得してAndroidアプリの画面に表示させるというようなことを行いたいのですが、この場合Androidと連携させるためのサーバは無料のレンタルWebサーバなどでもよろしいでしょうか? > > > 最初は無料のレンタルWebサーバで良いのではないでしょうか。ユーザ数が増えたなど、負荷が増えてきたら別の環境に引っ越せばいいと思います。