アンドロイドアプリケーションのWebサーバーからデータを取得したいところで、どこから開始するのかわかりません。私はWebサービスを使うべきですか?アンドロイドアプリケーションでWebサーバーからデータを取得するにはどうすればよいですか?
答えて
私はこれらのチュートリアルをお勧めします:
Connect android with PHP and MySql、JSON in androidとPHP and MySQLi
私は、これらのチュートリアルを使用して、あなたがあまりにも多くの困難を伴わずに作業をやろうとしているものを得ることができました。
これらの間に、それぞれの段階、アンドロイドアプリケーション、データベース、ウェブサーバー側で何をしようとしているかを説明し、受信した情報を処理して使用するための追加情報が含まれています情報
私が追加する唯一の事は、Connect android with PHPとMySqlチュートリアルでは廃止されたPHPでmysql_を使用することです。 MySqliを使用するほうがずっと良いので、私は第3のリンクを含んでいます。
あなたが何をしたいのかの基本的な概要はこれです:
1)Androidアプリでこのようなクラスを使用して、サーバーのPHPスクリプトに要求します
の通信を処理import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
// Response from the HTTP Request
static InputStream httpResponseStream = null;
// JSON Response String to create JSON Object
static String jsonString = "";
// Method to issue HTTP request, parse JSON result and return JSON Object
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
try {
// get a Http client
DefaultHttpClient httpClient = new DefaultHttpClient();
// If required HTTP method is POST
if (method == "POST") {
// Create a Http POST object
HttpPost httpPost = new HttpPost(url);
// Encode the passed parameters into the Http request
httpPost.setEntity(new UrlEncodedFormEntity(params));
// Execute the request and fetch Http response
HttpResponse httpResponse = httpClient.execute(httpPost);
// Extract the result from the response
HttpEntity httpEntity = httpResponse.getEntity();
// Open the result as an input stream for parsing
httpResponseStream = httpEntity.getContent();
}
// Else if it is GET
else if (method == "GET") {
// Format the parameters correctly for HTTP transmission
String paramString = URLEncodedUtils.format(params, "utf-8");
// Add parameters to url in GET format
url += "?" + paramString;
// Execute the request
HttpGet httpGet = new HttpGet(url);
// Execute the request and fetch Http response
HttpResponse httpResponse = httpClient.execute(httpGet);
// Extract the result from the response
HttpEntity httpEntity = httpResponse.getEntity();
// Open the result as an input stream for parsing
httpResponseStream = httpEntity.getContent();
}
// Catch Possible Exceptions
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
// Create buffered reader for the httpResponceStream
BufferedReader httpResponseReader = new BufferedReader(
new InputStreamReader(httpResponseStream, "iso-8859-1"), 8);
// String to hold current line from httpResponseReader
String line = null;
// Clear jsonString
jsonString = "";
// While there is still more response to read
while ((line = httpResponseReader.readLine()) != null) {
// Add line to jsonString
jsonString += (line + "\n");
}
// Close Response Stream
httpResponseStream.close();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
try {
// Create jsonObject from the jsonString and return it
return new JSONObject(jsonString);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
// Return null if in error
return null;
}
}
}
接続を開き、JSON文字列を受け取ってJSONオブジェクトに処理します。 PHPサーバーで
2)、あなたのSQLデータベースへのmysqliの接続を開き、mysqli-を実行>クエリ()し、その結果を次のように実行します。
if (mysqli_num_rows($result) > 0) {
// looping through all results
$response["apps"] = array();
while ($row = mysqli_fetch_array($result)) {
$apps = array();
$apps["name"] = $row["name"];
$apps["package"] = $row["package"];
$apps["version"] = $row["version"];
$apps["dateversion"] = $row["dateversion"];
$apps["sdkver"] = $row["sdkver"];
$apps["pathroot"] = $row["pathroot"];
$apps["rootname"] = $row["rootname"];
$apps["apkmd5"] = $row["apkmd5"];
$apps["extraapkmd5"] = $row["extraapkmd5"];
$apps["instructionsmd5"] = $row["instructionsmd5"];
$apps["assetsmd5"] = $row["assetsmd5"];
$apps["root"] = $row["root"];
$apps["current"] = $row["current"];
// push single product into final response array
array_push($response["apps"], $apps);
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
この繰り返し処理をデータベース経由レスポンスを取得し、JSON文字列にエンコードしてアンドロイドアプリに送り返し、アンドロイドアプリで処理します。
まず、使用するウェブサービスの中から選択する必要があります。
次に、あなたのニーズに最も適したタイプを見つける。
私によると、JSON、XMLやSOAPを解析する最も簡単な方法は、sが(チュートリアルリンクに)次のとおりです。
Json :Jackson frame work
xml :Simple framework
soap :ksoap2 framework
これは直接あなたの質問にお答えしませんが、あなた以降」 AsyncTaskでWebリクエストを構築することで、どこから始めるべきかを尋ねました。これにより、別のスレッドでリクエストを行い、UIにデータを設定することができます。
AsyncTasksはスレッドプールと作業キューを使用して、進行状況をユーザーに簡単に更新させることもできます。いくつかの良い例がここにあります:AsyncTask Android example
- 1. Webサーバーからアンドロイドで取得したデータを使用するにはどうすればいいですか
- 2. Webアプリケーションの値でfirebaseデータベースからデータを取得するにはどうすればよいですか?
- 3. Webサービスからバックグラウンドでデータを取得するにはどうすればよいですか?
- 4. Webサービスから特定のアンドロイドアプリケーションにデータを送信するにはどうすればいいですか?
- 5. サーバーからアプリケーションのデータを取得するにはどうすればよいですか?
- 6. JSONでデータを取得するにはどうすればよいですか?
- 7. Python WebクライアントprgoramのWebページからVIEWSTATE Valueを取得するにはどうすればよいですか?
- 8. アンドロイドアプリでhttpサーバーからライブイベントを取得するにはどうすればよいですか?ポーリングなしで
- 9. iFrameでサーバーからHTML応答を取得するにはどうすればよいですか?
- 10. MFCでHTTPサーバーからの応答を取得するにはどうすればよいですか?
- 11. Java WebサーバーからWebページにライブアップデートを提供するにはどうすればよいですか?
- 12. Extjs ArrayStoreデータを取得するにはどうすればよいですか?
- 13. _all_ NSURLRequestデータを取得するにはどうすればよいですか?
- 14. C#でXML Webサービスから値を取得するにはどうすればよいですか?
- 15. WebからBase64を取得し、Swiftでデコードするにはどうすればよいですか?
- 16. このようなテキストファイルからデータを取得するにはどうすればいいですか
- 17. ユーザーがサーバーにアップロードしたビデオからサムネイルを取得するにはどうすればよいですか?
- 18. d3 4.0では、レイヤードオブジェクトから余分なデータを取得するにはどうすればよいですか?
- 19. Swift 3では、データからUnsafeRawPointerを取得するにはどうすればよいですか?
- 20. マルチスレッドを使用してGmailサーバーからメールを取得するにはどうすればよいですか?
- 21. 異なるキーでJSONからデータを取得するにはどうすればよいですか?
- 22. JavaでResultSetMetaDataから異なるデータ型を取得するにはどうすればよいですか?
- 23. アンドロイドアプリケーションでスタックアクティビティを検索するにはどうすればよいですか?
- 24. サーバー側からPOSTメソッドのhttp.send()のパラメータを取得するにはどうすればよいですか?
- 25. サーバーから取得したタイムスタンプを更新するにはどうすればよいですか?
- 26. Golangサーバーからコードカバレッジを取得するにはどうすればよいですか?
- 27. iPhoneからサーバーへの高速ビデオライブストリームを取得するにはどうすればよいですか?
- 28. サーバーからJSON配列リストを取得するにはどうすればよいですか?
- 29. C#でDatabase.SqlQueryから取得したデータを表示するにはどうすればよいですか?
- 30. WebClientでSlack APIレスポンスからデータを取得するにはどうすればよいですか?
は非常に一般的な質問のthatsが、私はまさにそのプロセスを最初から最後までカバーする3つのチュートリアルへのリンクが含まれて答えを掲載しているリンクされているすべてのチュートリアルで説明されている。このようなものを作成する方法 – o0rebelious0o
うーん、程度でした正確な言葉で質問してください。私にはっきりと役に立つと思われる! –
「チャールズ・ビル・ザ・トカゲの本当の質問ではない」このウェブサイトはますますばかげてしまった。 – AlwaysConfused