Android 使用 ksoap2-android 访问WebService(C#)
Android 客户端与后台数据交互的方式有很多种。今天这里记录一下,与WebService的数据交互。
新建一个简单的WebService 创建方式如下:


创建好的项目是这样的。

我们在里面写几句简单的代码,如下:

这样,我们的WebService就写好了,接下来我们进行发布。右击项目,选择发布。

选择文件系统,这里我直接发布到本地IIS里面了。

这样就发布结束了,接下来,我们直接打开本地 IIS。

右击login.asmx。点击浏览就可以在默认浏览器中打开了。


这样我们的WebService就结束了。接下来是Android 客户端了。
这里我们首先需要一个jar包。这里我用的是 kSOAP2 下载地址: http://www.oschina.net/p/ksoap2+android
下载之后,我们直接把jar包放到libs里,然后右击,在弹出菜单中点击Add As Library.
然后弹窗,点击确定就好了。
下面我们开始写代码。
先写了一个简单的布局页面。

代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"> <EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="Account"
android:ems="10"
android:id="@+id/AccounText"
android:layout_marginTop="34dp"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/PwdText" /> <EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="Password"
android:ems="10"
android:id="@+id/PwdText"
android:layout_marginTop="24dp"
android:layout_below="@+id/AccounText"
android:layout_centerHorizontal="true" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:id="@+id/button"
android:layout_below="@+id/PwdText"
android:layout_centerHorizontal="true"
android:layout_marginTop="36dp" /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="内容"
android:id="@+id/textView"
android:layout_below="@+id/button"
android:layout_marginTop="24dp"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true" />
</RelativeLayout>
然后是主Activity 代码如下:
下面代码中有几个注意点 NAMESPACE、MYURL、METHODNAME。其中NAMESPACE 对应上面我们WebService命名空间,我这里是默认的命名空间。
MYURL 对应的地址不止当前WebService 的地址,而是引用方法的具体地址 上面已经说过了。METHODNAME 是调用的方法名
package com.example.administrator.login1; import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE; public class MainActivity extends Activity { private EditText accountet,pwdet;
private Button loginbtn;
private TextView textView;
private myHandler myHandler =new myHandler(); private final String
NAMESPACE
="http://tempuri.org/"; //WebService 服务器命名空间
private final String
MYURL
="http://172.18.216.7/login/login.asmx"; //方法的详细地址
private final String
METHODNAME
="login1"; //具体的方法名称
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//登录按钮
loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
SoapObject request = new SoapObject(
NAMESPACE,METHODNAME
);
request.addProperty("name", accountet.getText().toString());
request.addProperty("pwd", pwdet.getText().toString());
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(
MYURL
);
ht.call(
NAMESPACE+METHODNAME
, envelope);
//返回对象应为Object 否则会出现转换异常错误
Object
soapObject = (
Object
) envelope.getResponse();
//发送消息更新UI
Message msg2 = new Message();
Bundle bundle = new Bundle();
bundle.putString("result", soapObject.toString());
msg2.what = 1;
msg2.setData(bundle);
myHandler.sendMessage(msg2);
}catch (Exception e) {
Log.e("lyf",e.toString());
e.printStackTrace();
}
}
}).start();
}
});
}
private void initView()
{
accountet= (EditText) this.findViewById(R.id.AccounText);
pwdet= (EditText) this.findViewById(R.id.PwdText);
loginbtn = (Button) this.findViewById(R.id.button);
textView= (TextView) this.findViewById(R.id.textView);
}
class myHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
//更新TextView 显示返回结果
textView.setText(msg.getData().getString("result"));
break;
}
super.handleMessage(msg);
}
}
}
Android 使用 ksoap2-android 访问WebService(C#)的更多相关文章
- 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
ksoap2-android-3.0.0-jar 第三方库来调用.net 写的Web Service 如果没有参数,那么调用一切顺利,但是如果服务是带参数的,那么服务端接收的参数都是nul. ...
- 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}
最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...
- Android实现KSOAP2访问WebService
Android实现KSOAP2访问WebService 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 写一个工具类来给主界面使用,作用是使用 ...
- Android使用KSOAP2调用WebService及正确导入jar包的问题(转)
Android使用KSOAP2调用WebService及正确导入jar包的问题(转) 错误信息 最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代 ...
- 【转载】Android通过ksoap2调用.net(c#)的webservice
转载自:http://www.cnblogs.com/badtree/articles/3242842.html ■下载 ksoap2-android 包 去http://code.google.co ...
- Android访问WebService的两种方法
首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.详细见:http://baik ...
- android 使用Ksoap2工具类实现WebService网络编程
1.下载Ksoap2,将jar包拷贝到libs目录下.然后右键点击拷贝进来的jar,在弹出菜单中点击Add As Library. 2.在AndroidManifest.xml中添加访问网络的权限 & ...
- Android使用ksoap2调用C#中的webservice实现图像上传
目录: 一. android使用ksoap2调用webservice 二. 异步调用 三. Android使用ksoap2调用C#中的webservice实现图像上传参考方法 四. 图像传输中Base ...
- Android局域网访问webservice以及其中的一些问题
应老师的要求,要做个安卓app,实现备份app上的数据到服务器上的mongodb上,网上搜了下相关的实现方式.利用webservice技术,具体来说就是客户端直接调用服务器端的接口.之前从来没接触这玩 ...
随机推荐
- 几款值得推荐的android(安卓)开源框架简介
技术不再多,知道一些常用的.不错的就够了. 该文章自有需要的时候,mark一下. 顺序不代表排名,根据自己需求进行选择即可. 1.volley 项目地址 https://github.com/sman ...
- Linq一 基础知识
1.什么是Linq 他是VS2008(.net framework 3.5)之后一项重大的突破 全程Lnaguage Integrated Query,可以成为数据迭代器. 主要有以下5大块组成: L ...
- HDU 1198(并查集)
题意:给你11个图,每一个都有管道,然后给一张由这11个正方形中的n个组成的图,判断有几条连通的管道: 思路:在大一暑假的时候做过这道题,当时是当暴力来做的,正解是并查集,需要进行一下转换: 转换1: ...
- Linux命令行与图形界面切换方法
1.实时切换 1.1 命令行->图形 startx 1.2 图形->命令行 Ctrl+Alt+F1--F6 2.启动默认 2.1 启动进入命令行 修改/etc/inittab文件 &quo ...
- XML实体注入漏洞
XML实体注入漏洞 测试代码1: 新建xmlget.php,复制下面代码 <?php $xml=$_GET['xml']; $data = simplexml_load_string($xml) ...
- 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut
异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...
- ✡ leetcode 158. Read N Characters Given Read4 II - Call multiple times 对一个文件多次调用read(157题的延伸题) --------- java
The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actu ...
- ASP.NET Razor——Razor 简介
ASP.NET Razor - 标记 Razor 不是一种编程语言.它是服务器端的标记语言. 什么是 Razor? Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 ...
- java 生成8位数字作为UID
java 生成8位数字作为UUID: /*** * 生成uid 8位数字 */public static String generateUID(){ Random random = new Rando ...
- (转)神经网络和深度学习简史(第一部分):从感知机到BP算法
深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...