工具:VS 2010和android studio2.2
首先建c#的web service
vs2010已经没有直接创建web服务的选项,只能先建网站然后再添加web服务;(具体的创建网上都有)
[WebService(Namespace = "http://xxx.com/")]这个是命名空间最好改一下 android必配
在app_code中新建一个方法:
[WebMethod]//这个必须加
public string userExist(string userName, string passWord)
{
//LogUtil.LogInfo("客户端发来信息:"+userName);
//LogUtil.LogInfo("客户端发来信息:" + passWord);
if (userName == "1" && passWord == "1")
return "Y";
else
return "N";
}
在电脑上安装iis,然后将网站发布到iis中 (注意:如果开发用的是.net4的,安装iis的时候选择
要选择asp.net4.6就可以了。
然后在网页测试iis是否成功;
android端;
新建一个工程
android调用web service需要下载jar包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar
加载到工程就可以使用了
具体代码:
String NAME_SPACE ="http://xxx.com/";//命名空间
String METHOD_NAME ="userExist";//方法名
String ENDPOINT ="http://192.168.137.1:8080/WebService.asmx";//web service的地址
SoapObject soapObject = new SoapObject(NAME_SPACE, METHOD_NAME);//创建一个web service方法
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//envelope.bodyOut=soapObject;
// 设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;
//我是用的多个函数,在这里就直接贴出来了合并了
PropertyInfo[] propertyInfos = new PropertyInfo[2];
propertyInfos[0] = new PropertyInfo();
propertyInfos[0].type = PropertyInfo.STRING_CLASS;
propertyInfos[0].setName("userName");//注意参数名必须相同
propertyInfos[0].setValue(1);
propertyInfos[1] = new PropertyInfo();
propertyInfos[1].type = PropertyInfo.STRING_CLASS;
propertyInfos[1].setName("passWord");");//注意参数名必须相同
propertyInfos[1].setValue(1);
if (propertyInfos != null)
for (int i = 0; i < propertyInfos.length; i++) {
soapObject.addProperty(propertyInfos[i]);
}
// 等价于envelope.bodyOut = rpc;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE transport = new HttpTransportSE(ENDPOINT);
try {
transport.call(soapn, envelope);
} catch (Exception e) {
e.printStackTrace();
}
String result = null;
// 获取返回的数据
if (envelope.bodyIn instanceof SoapFault) {
final SoapFault sf = (SoapFault) envelope.bodyIn;
result = sf.faultstring;
System.out.println(result);
}else {
SoapObject object = (SoapObject) envelope.bodyIn;
// 获取返回的结果
System.out.println(object.toString());
result = object.getProperty(0).toString();
System.out.println(result);
}
输出结果: