android与C# WebService基于ksoap通信(Android篇)
16lz
2021-01-24
1.创建安卓项目KSoapTest
2.一路Next
3.添加ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar到项目
(稍后的完整项目下载后会包含这个jar包)
4.编辑 activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:layout_marginTop="56dp" android:text="点击访问服务端HelloWorld" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="86dp" android:text="TextView" />RelativeLayout>
5.添加基类Activity类:BaseKsoapActivity.java,代码如下:
package com.example.base;import java.util.Iterator;import java.util.Map;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.app.AlertDialog;import android.content.DialogInterface;import android.os.AsyncTask;import android.os.Bundle;/** * * @author WangPeng * 2015年8月7日11:24:49 * 集成该类的Activity可以方便的调用Web Service进行通信 * */@SuppressWarnings("all")public abstract class BaseKsoapActivity extends Activity{ // 服务器链接 final String WEB_SERVICE_URL = "http://%s/TestService.asmx?wsdl"; // 命名空间 final String Namespace = "http://tempuri.org/"; //服务器地址 private String ipAddress; /** * Activity 创建时候执行 * 获取Web Service所在服务器地址 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //IP地址可以通过配置来获得 //注意:不能使用127.0.0.1或localhost,因为安卓程序是在手机上运行的,手机不能通过127.0.0.1或localhost访问电脑上的IIS //这里我使用的是我电脑的无线网卡的IP地址,我的手机也连接在这个无线网上 this.ipAddress = "192.168.20.133"; } /** * * @param paras */ protected void Request(Object... paras) { new AsyncTask
6.编辑MainActivity,继承上面的BaseKsoapActivity,代码如下:
package com.example.ksoaptest;import java.util.HashMap;import java.util.Map;import org.ksoap2.serialization.SoapObject;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import com.example.base.BaseKsoapActivity;public class MainActivity extends BaseKsoapActivity { private Button btn; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button1); tv = (TextView)findViewById(R.id.textView1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Map paras = new HashMap(); //paras.put("参数名","参数值"); Request("HelloWorld", paras); } }); } @Override protected void requestCallBack(SoapObject obj) { //复杂一点的返回值需要解析,我们这里返回的是String,所以解析比较简单 //对于复杂的返回类型,个人建议在服务端转换成JSON字符串后返回, //这样客户端只要得到这个字符串扔给第三方的Gson或jsonlib就可以转换成需要的对象 //而且对于byte数组这样的返回值通过xml传输会加上很多无用的标签,增加了传输的数据量,降低效率 tv.setText(obj.getProperty(0).toString()); }}
7.在AndroidManifest.xml添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
8.运行
9.C#和安卓完整代码已上传
http://download.csdn.net/detail/u013816347/8999889
欢迎评论指正
更多相关文章
- 万字长文带你了解最常用的开源 Squid 代理服务器
- Android实现信号强度监听的方法
- android配置开发环境
- 禁止应用获取手机信息
- android中返回页面并刷新
- 源码分析android 系统framework(一)之Activity 与 Window 与 View
- Android(安卓)TabLayout 不显示标题的解决方法
- Android开发指南(39) —— Testing Fundamentals
- LogCat中不输出任何的信息