第104章、AndroidアクセスWebService(ゼロからAndroidを学ぶ)
8962 ワード
天気予報、携帯電話のホーム検索……、SQL SERVERデータベースとのリモートインタラクションも含めてWeb Serviceで済ませられます.
準備:
(1)最初のステップは、Android locSDK 3.3をダウンロードします.ダウンロード先:http://ksoap2-android.googlecode.com/svn/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.6.0/ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar
(2)ステップ2、拡張子zipをjarに変更
ダウンロード後、ファイル名はksoap 2-android-assembly-2.6.0-jar-with-dependencies.zip
ksoap 2-android-assembly-2.6.0-jar-with-dependencies.jarに変更してください.
準備作業はこれで終了しました.
一、工程配置
1、第一歩は、プロジェクトにlibsフォルダを新規作成し、開発パッケージのksoap 2-android-assembly-2.6.0-jar-with-dependencies.jarをlibsルートディレクトリにコピーし、コピーが完了したプロジェクトディレクトリを下図に示す.
2、ステップ2:エンジニアリングプロパティ->Java Build Path->Librariesで「Add External JARs」を選択し、ksoap 2-android-assembly-2.6.0-jar-with-dependencies.jarを選択し、決定して戻ります.
以上の2つのステップで、Webサービスの機能を正常に使用できます.
二、設計インタフェース
1、レイアウトファイル
res/layout/activityを開くmain.xmlファイル.次のコードを入力します.
三、プログラムファイル
1、MainActivity.java「src/com.genwoxue.baidulocation/MainActivity.java」ファイルを開きます.次に、次のコードを入力します.
四、プロファイル「AndroidManifest.xml」ファイルを開く.
注意:WebServiceを呼び出すため、AndroidManifest.xmlにインターネット権限が追加されていることに注意してください.
五、運行結果
準備:
(1)最初のステップは、Android locSDK 3.3をダウンロードします.ダウンロード先:http://ksoap2-android.googlecode.com/svn/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.6.0/ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar
(2)ステップ2、拡張子zipをjarに変更
ダウンロード後、ファイル名はksoap 2-android-assembly-2.6.0-jar-with-dependencies.zip
ksoap 2-android-assembly-2.6.0-jar-with-dependencies.jarに変更してください.
準備作業はこれで終了しました.
一、工程配置
1、第一歩は、プロジェクトにlibsフォルダを新規作成し、開発パッケージのksoap 2-android-assembly-2.6.0-jar-with-dependencies.jarをlibsルートディレクトリにコピーし、コピーが完了したプロジェクトディレクトリを下図に示す.
2、ステップ2:エンジニアリングプロパティ->Java Build Path->Librariesで「Add External JARs」を選択し、ksoap 2-android-assembly-2.6.0-jar-with-dependencies.jarを選択し、決定して戻ります.
以上の2つのステップで、Webサービスの機能を正常に使用できます.
二、設計インタフェース
1、レイアウトファイル
res/layout/activityを開くmain.xmlファイル.次のコードを入力します.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/mobile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone" >
<requestFocus />
</EditText>
<Button
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" " />
<TextView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp" />
</LinearLayout>
三、プログラムファイル
1、MainActivity.java「src/com.genwoxue.baidulocation/MainActivity.java」ファイルを開きます.次に、次のコードを入力します.
package com.genwoxue.webservice;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private EditText etMobile=null;
private TextView tvLocation=null;
private Button btnSearch=null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etMobile = (EditText) findViewById(R.id.mobile);
tvLocation = (TextView) findViewById(R.id.location);
btnSearch=(Button)super.findViewById(R.id.search);
btnSearch.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
String mobile = etMobile.getText().toString();
PageTask task = new PageTask();
task.execute(mobile);
}
});
}
/* :
* (1)onPreExecute(), , UI ,
* , 。
* (2)doInBackground(Params...), ,
* doInBackground(Params...) AsyncTask , 。
* publishProgress(Progress...) 。
* (3)onProgressUpdate(Progress...), UI 。
* doInBackground(Params...) publishProgress(Progress...),
* 。 。
* (4)onPostExecute(Result), UI , ,
* doInBackground(Params...) 。 , Result
* null ( )。 *
*/
class PageTask extends AsyncTask<String, Integer, String> {
// (1)
@Override
protected void onPreExecute() {
tvLocation.setText("task_started");
}
//(2) : ( WebService )
@Override
protected String doInBackground(String... params) {
String result = null;
//
String nameSpace = "http://WebXml.com.cn/";
//
String methodName = "getMobileCodeInfo";
// EndPoint
String endPoint = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
// SOAP Action
String soapAction = "http://WebXml.com.cn/getMobileCodeInfo";
// WebService
SoapObject rpc = new SoapObject(nameSpace, methodName);
// WebService mobileCode、userId
rpc.addProperty("mobileCode", params[0]);
rpc.addProperty("userId", "");
// WebService SOAP , SOAP
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.bodyOut = rpc;
// dotNet WebService
envelope.dotNet = true;
// envelope.bodyOut = rpc;
envelope.setOutputSoapObject(rpc);
HttpTransportSE transport = new HttpTransportSE(endPoint);
try {
// WebService
transport.call(soapAction, envelope);
} catch (Exception e) {
e.printStackTrace();
}
//
SoapObject object = (SoapObject) envelope.bodyIn;
//
result = object.getProperty(0).toString();
return result;
}
//(3) doInBackground publishProgress(Progress...) onProgressUpdate
@Override
protected void onProgressUpdate(Integer... values) {
//
tvLocation.setText(" ……"+values[0]);
}
//(4) , doInBackground(Params...) 。
@Override
protected void onPostExecute(String result) {
// HTML
tvLocation.setText(result);
}
}
}
四、プロファイル「AndroidManifest.xml」ファイルを開く.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.genwoxue.webservice"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
注意:WebServiceを呼び出すため、AndroidManifest.xmlにインターネット権限が追加されていることに注意してください.
五、運行結果