ksoap2ライブラリを使用してAndroidアプリをサーバー側に接続するためにWebサービスを使用しています。問題は、さまざまな関連資料を読んでいるにもかかわらず、マーシャリング、シアリング、デシアリングなどの用語についてまだ混乱していることです。実際には、それらの違いは何ですか?そしてなぜそれをする必要があるのか。私はそれがウェブサービスにのみ関連していることを知っています、そしてそれは基本的にウェブサービスから値を渡すか返すために行われます。なぜ実際にそれらが必要なのか、そして実際にどのようにコンテンツまたはWebサーバー自体をシールまたはデシールするのかによって、この機能が提供されますか?クライアント側またはWebサービス自体でマーシャリングまたはシリアル化のコードを作成する必要がありますか?とにかく私たちがしないことはありますか?これを実行して、自動的に実行するためにプロジェクトに含めることができるライブラリやライブラリをシールしたり、シールを解除したりする必要がないようにWebサービスを呼び出す必要がありますか?案内してください
質問する
926 次
1 に答える
0
マーシャリング/シリアル化、アンマーシャリング/逆シリアル化は、Webサービスの世界では同じ意味で使用されることが多く、基本的には同じ意味です。
Webサービスにリクエストを送信するときは、特定の方法でリクエストを作成する必要があります。RESTWebサービスの場合、リクエスト/レスポンスの形式は通常XMLまたはJSONです。
SOAP Webサービスの場合、形式はXMLになります。
したがって、リクエストを送信するたびに、正しい形式でリクエストを作成する必要があります。これは、マーシャリング/シリアル化と呼ばれます。
応答を受け取るたびにそれを解析する必要があり、それはアンマーシャリング/デシリアライズと呼ばれます。
REST Webサービスはより簡単で柔軟性があるため、学ぶことをお勧めします。
編集:
JavaでRESTサービスに接続するには、HttpURLConnectionを使用する必要があります。
これがどのように見えるかのサンプルコードです:
public static String httpPost(String urlStr) throws Exception {
URL url = new URL(urlStr);
HttpURLConnection conn =
(HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setAllowUserInteraction(false);
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
if (conn.getResponseCode() != 200) {
throw new IOException(conn.getResponseMessage());
}
// Buffer the result into a string
BufferedReader rd = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
conn.disconnect();
return sb.toString();
}
于 2012-07-16T09:03:13.223 に答える