Android调用Webservice实现手机与PCSERVER的交互,废话不多说,直接贴代码,下面是一段通过WEBSERVICE获取天气的代码
package com.android; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.AndroidHttpTransport; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.method.LinkMovementMethod; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends Activity { private static String LOG_TAG = "Weather" ; private static boolean DEBUG = false ; private static final int SHOW_ABOUT = 0x0001 ; private static final String NAMESPACE = "http://WebXml.com.cn/" ; //WebService地址 private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx" ; private static final String METHOD_NAME = "getWeatherbyCityName" ; private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName" ; private String weatherToday; private String weatherTomorrow; private String weatherAfterday; private String weatherCurrent; private int iconToday[] = new int [ 2 ]; private int iconTomorrow[] = new int [ 2 ]; private int iconAfterday[] = new int [ 2 ]; private Button okButton; private EditText textInput; private ImageView imageView1; private ImageView imageView2; private TextView textWeatherToday; private ImageView imageView3; private ImageView imageView4; private TextView textWeatherTomorrow; private ImageView imageView5; private ImageView imageView6; private TextView textWeatherAfterday; private TextView textWeatherCurrent; private SoapObject detail; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); okButton = (Button) findViewById(R.id.WeatherSearch); textInput = (EditText) findViewById(R.id.TextWeather); imageView1 = (ImageView) findViewById(R.id.ImageView01); imageView2 = (ImageView) findViewById(R.id.ImageView02); textWeatherToday = (TextView) findViewById(R.id.WeatherToday); imageView3 = (ImageView) findViewById(R.id.ImageView03); imageView4 = (ImageView) findViewById(R.id.ImageView04); textWeatherTomorrow = (TextView) findViewById(R.id.WeatherTomorrow); imageView5 = (ImageView) findViewById(R.id.ImageView05); imageView6 = (ImageView) findViewById(R.id.ImageView06); textWeatherAfterday = (TextView) findViewById(R.id.WeatherAfterday); textWeatherCurrent = (TextView) findViewById(R.id.WeatherCurrent); okButton.setOnClickListener( new Button.OnClickListener() { public void onClick(View v) { showWeather(); } }); } private void showWeather() { String city = textInput.getText().toString(); if (city.length() == 0 ) city = "合肥" ; getWeather(city); textWeatherToday.setText(getWeatherToday()); imageView1.setImageResource(getIconToday( 0 )); imageView2.setImageResource(getIconToday( 1 )); textWeatherTomorrow.setText(getWeatherTomorrow()); imageView3.setImageResource(getIconTomorrow( 0 )); imageView4.setImageResource(getIconTomorrow( 1 )); textWeatherAfterday.setText(getWeatherAfterday()); imageView5.setImageResource(getIconAfterday( 0 )); imageView6.setImageResource(getIconAfterday( 1 )); textWeatherCurrent.setText(getWeatherCurrent()); } public void getWeather(String cityName) { try { SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME); rpc.addProperty( "theCityName" , cityName); AndroidHttpTransport ht = new AndroidHttpTransport(URL); ht.debug = true ; SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.bodyOut = rpc; envelope.dotNet = true ; envelope.setOutputSoapObject(rpc); ht.call(SOAP_ACTION, envelope); debug(LOG_TAG, "DUMP>> " + ht.requestDump); debug(LOG_TAG, "DUMP<< " + ht.responseDump); SoapObject result = (SoapObject) envelope.bodyIn; detail = (SoapObject) result.getProperty( "getWeatherbyCityNameResult" ); parseWeather(detail); return ; } catch (Exception e) { e.printStackTrace(); } } private void parseWeather(SoapObject detail) { String date = detail.getProperty( 6 ).toString(); weatherToday = "今天:" + date.split( " " )[ 0 ]; weatherToday = weatherToday + "\n天气:" + date.split( " " )[ 1 ]; weatherToday = weatherToday + "\n气温:" + detail.getProperty( 5 ).toString(); weatherToday = weatherToday + "\n风力:" + detail.getProperty( 7 ).toString() + "\n" ; iconToday[ 0 ] = parseIcon(detail.getProperty( 8 ).toString()); iconToday[ 1 ] = parseIcon(detail.getProperty( 9 ).toString()); weatherCurrent = detail.getProperty( 10 ).toString(); date = detail.getProperty( 13 ).toString(); weatherTomorrow = "明天:" + date.split( " " )[ 0 ]; weatherTomorrow = weatherTomorrow + "\n天气:" + date.split( " " )[ 1 ]; weatherTomorrow = weatherTomorrow + "\n气温:" + detail.getProperty( 12 ).toString(); weatherTomorrow = weatherTomorrow + "\n风力:" + detail.getProperty( 14 ).toString() + "\n" ; iconTomorrow[ 0 ] = parseIcon(detail.getProperty( 15 ).toString()); iconTomorrow[ 1 ] = parseIcon(detail.getProperty( 16 ).toString()); date = detail.getProperty( 18 ).toString(); weatherAfterday = "后天:" + date.split( " " )[ 0 ]; weatherAfterday = weatherAfterday + "\n天气:" + date.split( " " )[ 1 ]; weatherAfterday = weatherAfterday + "\n气温:" + detail.getProperty( 17 ).toString(); weatherAfterday = weatherAfterday + "\n风力:" + detail.getProperty( 19 ).toString() + "\n" ; iconAfterday[ 0 ] = parseIcon(detail.getProperty( 20 ).toString()); iconAfterday[ 1 ] = parseIcon(detail.getProperty( 21 ).toString()); } public String getWeatherToday() { debug(LOG_TAG, "weatherToday: " + weatherToday); return weatherToday; } public String getWeatherTomorrow() { debug(LOG_TAG, "weatherTomorrow: " + weatherTomorrow); return weatherTomorrow; } public String getWeatherAfterday() { debug(LOG_TAG, "weatherAfterday: " + weatherAfterday); return weatherAfterday; } public String getWeatherCurrent() { debug(LOG_TAG, "weatherCurrent: " + weatherCurrent); return weatherCurrent; } public int getIconToday ( int index) { return iconToday[index]; } public int getIconTomorrow ( int index) { return iconTomorrow[index]; } public int getIconAfterday ( int index) { return iconAfterday[index]; } private int parseIcon(String strIcon) { if (strIcon == null ) return - 1 ; if ( "0.gif" .equals(strIcon)) return R.drawable.a_0; if ( "1.gif" .equals(strIcon)) return R.drawable.a_1; if ( "2.gif" .equals(strIcon)) return R.drawable.a_2; if ( "3.gif" .equals(strIcon)) return R.drawable.a_3; if ( "4.gif" .equals(strIcon)) return R.drawable.a_4; if ( "5.gif" .equals(strIcon)) return R.drawable.a_5; if ( "6.gif" .equals(strIcon)) return R.drawable.a_6; if ( "7.gif" .equals(strIcon)) return R.drawable.a_7; if ( "8.gif" .equals(strIcon)) return R.drawable.a_8; if ( "9.gif" .equals(strIcon)) return R.drawable.a_9; if ( "10.gif" .equals(strIcon)) return R.drawable.a_10; if ( "11.gif" .equals(strIcon)) return R.drawable.a_11; if ( "12.gif" .equals(strIcon)) return R.drawable.a_12; if ( "13.gif" .equals(strIcon)) return R.drawable.a_13; if ( "14.gif" .equals(strIcon)) return R.drawable.a_14; if ( "15.gif" .equals(strIcon)) return R.drawable.a_15; if ( "16.gif" .equals(strIcon)) return R.drawable.a_16; if ( "17.gif" .equals(strIcon)) return R.drawable.a_17; if ( "18.gif" .equals(strIcon)) return R.drawable.a_18; if ( "19.gif" .equals(strIcon)) return R.drawable.a_19; if ( "20.gif" .equals(strIcon)) return R.drawable.a_20; if ( "21.gif" .equals(strIcon)) return R.drawable.a_21; if ( "22.gif" .equals(strIcon)) return R.drawable.a_22; if ( "23.gif" .equals(strIcon)) return R.drawable.a_23; if ( "24.gif" .equals(strIcon)) return R.drawable.a_24; if ( "25.gif" .equals(strIcon)) return R.drawable.a_25; if ( "26.gif" .equals(strIcon)) return R.drawable.a_26; if ( "27.gif" .equals(strIcon)) return R.drawable.a_27; if ( "28.gif" .equals(strIcon)) return R.drawable.a_28; if ( "29.gif" .equals(strIcon)) return R.drawable.a_29; if ( "30.gif" .equals(strIcon)) return R.drawable.a_30; if ( "31.gif" .equals(strIcon)) return R.drawable.a_31; return 0 ; } private static void debug(String tag, String msg) { if (DEBUG) Log.d(tag, msg); } private void showAbout() { TextView textAbout = new TextView( this ); textAbout.setText(R.string.about_text); textAbout.setMovementMethod(LinkMovementMethod.getInstance()); Dialog dlg = new AlertDialog.Builder( this ) .setTitle(R.string.app_about) .setView(textAbout) .setPositiveButton(R.string.about_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }) .create(); dlg.show(); } private void about_city(){ String result_city=detail.getProperty( 11 ).toString(); new AlertDialog.Builder( this ).setTitle(textInput.getText().toString()).setMessage(result_city).setPositiveButton( "OK" , null ).show(); } public boolean onCreateOptionsMenu(Menu menu) { super .onCreateOptionsMenu(menu); menu.add( 0 , SHOW_ABOUT, 0 , R.string.app_about); menu.add( 0 , 2 , 1 ,R.string.city); // menu.addSubMenu("jack").add("tom1") // .add("tom2"); //menu.addS this .getMenuInflater().inflate(R.layout.menu, menu); return true ; } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case SHOW_ABOUT: showAbout(); break ; case 2 :about_city(); break ; } return true ; } }