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/";
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);
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;
}
}
分享到:
相关推荐
二、Android访问Web Service的基本步骤 1. 添加网络权限:在AndroidManifest.xml文件中,添加`<uses-permission android:name="android.permission.INTERNET" />`以允许应用访问网络。 2. 选择库:Android提供了...
Android访问Web Service主要涉及到两种技术:SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)。本篇将详细介绍这两种方式以及相关的实现步骤。 **1. SOAP** SOAP是一种XML格式的...
4. **Android访问WebService**: 在Android端,我们可以使用`HttpURLConnection`或`HttpClient`类进行HTTP请求,但现代Android开发推荐使用`OkHttp`库。此外,对于SOAP WebService,我们可以使用`Ksoap2`库,它简化...
总结起来,Android访问Web Service框架,特别是使用ksoap2,涉及的关键步骤包括:导入ksoap2库,编写HttpHelper类以封装请求和响应处理,以及在应用程序中调用HttpHelper类的相关方法来执行实际的Web Service调用。...
以上是关于“android访问webservice”的核心知识点,涵盖了从理解Web Service概念,选择合适的HTTP客户端库,构建请求,处理响应,直至在Android应用中实际运用的全过程。掌握这些技能,将使你在开发涉及服务器通信...
本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作系统,主要用于移动设备,如智能手机和平板电脑。 2. ...
总结,Android访问Web Service涉及到网络通信和数据交换,理解并掌握SOAP和RESTful这两种方式对于Android开发者来说至关重要。无论是本地还是网络的Web Service,都需要遵循相同的基本步骤:构建请求、发送请求、...
Delphi XE5 Android 平台调用 Webservice 并访问操作 MSSQL 数据库 Delphi XE5 是一款功能强大且灵活的开发环境,为开发者提供了跨平台的开发体验。在 Android 平台上,Delphi XE5 提供了强大的支持,允许开发者...
本篇将详细讲解如何在Android应用中使用Java调用Webservice。 一、理解Web服务 Web服务是一种基于互联网的、标准化的服务交互方式,它允许不同系统之间的应用程序共享数据和功能。常见的Web服务有SOAP(Simple ...
Android 配合 WebService 访问远程数据库 Android 与服务器端数据交互是移动应用开发中非常重要的一部分。在本文中,我们将介绍如何使用 WebService 访问远程数据库,并在 Android 客户端中调用服务器端方法获取...
在Android开发中,调用WebService是一项常见的任务,用于让移动应用与远程服务器进行数据交互。WebService通常基于HTTP协议,提供XML、JSON等格式的数据交换,使得不同平台的应用能够共享服务。本文将深入探讨如何在...
### 在Android中访问WebService接口 #### 一、引言 随着移动互联网的发展,越来越多的应用程序需要与后端服务器进行交互来获取数据或提供服务。在Android应用开发中,访问WebService接口是一种常见的通信方式。...
总结,Android访问WebService和Servlet涉及的关键技术包括kSOAP2库的使用、HTTP请求的发送、JSON数据的解析以及UI数据绑定。理解这些知识点对于Android开发者来说至关重要,因为它们是实现跨平台数据交换的基础。在...
【Android与WebService天气预报Demo详解】 在移动应用开发中,实时获取天气信息是常见的功能之一。本Demo结合了Android客户端和WebService技术,为用户展示如何从远程服务器获取并展示天气预报数据。通过这个实例,...
为了使Android客户端能够访问WebService,需要在本地IIS中绑定固定的IP地址和端口。这一过程包括在Windows控制面板中启用IIS相关功能,然后在IIS管理器中创建一个新的网站,指定其IP地址、端口和物理路径。 ### ...
在Android开发中,调用Web服务(特别是WebService)是实现数据交互的重要手段,尤其是在构建登录功能时。本项目是一个入门级别的教程,旨在帮助新手理解如何在Android应用中调用WebService进行用户登录验证。下面...
在Android开发中,Web服务(通常指WebService)是一种允许应用程序之间进行交互的技术,它使得移动应用,如Android应用,能够与远程服务器进行数据交换。在本案例中,开发者遇到了一个常见的问题:`java.lang....
在Android开发中,Webservice是一种常见的数据交互方式,它允许移动应用通过网络获取远程服务器上的数据。本实例将深入探讨Android中如何使用Webservice,特别是针对天气预报服务的调用。我们将关注以下几个核心知识...
在Android开发中,与Web Service的交互是常见且重要的任务,尤其当需要从远程服务器获取或更新...提供的文档`Android配合WebService访问远程数据库.docx`可能包含更详细的步骤和示例代码,可以帮助深入理解这一过程。
总的来说,要在Android应用中实现调用WebService查询QQ在线状态,你需要理解Android网络通信机制,熟悉SOAP协议和XML解析,并根据腾讯的API文档编写相应的请求和解析逻辑。同时,确保项目配置正确,具备网络访问权限...