Android Studio通过Ksoap2连接WCF

<环境>

Android Studio:1.1

Visual Studio:2013

Ksoap2:3.4

运行:Server2012R2 + IIS8.0 + xiaomi4.4.2

<目的>

通过VS建立一个简单的WCF服务HelloService,并提供服务方法SayHello,AS中通过Ksoap2连接到该服务并调用SayHello方法,并得到返回数据。

参考:

http://blog.sina.com.cn/s/blog_87131d9a0101rmwg.html

http://www.cnblogs.com/davidgu/archive/2012/05/16/2504182.html

http://blog.sina.com.cn/s/blog_72a0e0b00101j2s7.html

<过程>

VS中建立WCF服务Hello.svc,代码如下:

using System.ServiceModel;

namespace WCF.Demo.Service {
    [ServiceContract(Name = "HelloService", Namespace = "http://www.longkai.com")]
    public interface IHello {
        [OperationContract]
        string SayHello(string word);
    }
}

实现的代码IHello.cs如下:

namespace WCF.Demo.Service {
    public class Hello : IHello {
        public string SayHello(string word) {
            return "HelloWorld " + word;
        }
    }
}

右击Web.config,编辑WCF配置。设置高级->服务行为、新建服务、新建绑定配置等,最后发布到IIS上。配置文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" />
    <customErrors mode="Off"/>
  </system.web>

  <system.serviceModel>
    <serviceHostingEnvironment>
      <serviceActivations >
        <add relativeAddress="Hello.svc" service="WCF.Demo.Service.Hello"/>
      </serviceActivations >
    </serviceHostingEnvironment >

    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBindingCfg" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>

    <services>
      <service name="WCF.Demo.Service.Hello" behaviorConfiguration="ServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://192.168.1.2:9999/Hello"/>
          </baseAddresses>
        </host>
        <endpoint binding="basicHttpBinding" contract="WCF.Demo.Service.IHello">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>
</configuration>

在AS中输入代码:

//新建一个接口, 用于专门读取WCF返回的SoapObject对象
public interface ISoapService {
  SoapObject LoadResult();
}
public class HelloService implements ISoapService {
  private static final String NameSpace = "http://www.longkai.com";
  private static final String URL = "http://192.168.1.2:9999/Hello.svc";
  private static final String SOAP_ACTION = "http://www.longkai.com/HelloService/SayHello";
  private static final String MethodName = "SayHello";

  private String word;
  public HelloService(String word) {
    this.word = word;
  }

  public SoapObject LoadResult() {
    SoapObject soapObject = new SoapObject(NameSpace, MethodName);
    soapObject.addProperty("word", word);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // 版本
    envelope.bodyOut = soapObject;
    envelope.dotNet = true;
    envelope.setOutputSoapObject(soapObject);

    HttpTransportSE trans = new HttpTransportSE(URL);
    trans.debug = true; // 使用调试功能

    try {
      trans.call(SOAP_ACTION, envelope);
      System.out.println("Call Successful!");
    } catch (IOException e) {
      System.out.println("IOException");
      e.printStackTrace();
    } catch (XmlPullParserException e) {
      System.out.println("XmlPullParserException");
      e.printStackTrace();
    }

    SoapObject result = (SoapObject) envelope.bodyIn;

    return result;
  }
}

在主线程中输代码:

Thread thread = new Thread(new Runnable() {
  @Override
  public void run() {
    HelloService service = new HelloService("Jack");
    SoapObject result = service.LoadResult();

    System.out.println("WCF返回的数据是:" + result.getProperty(0));
  }
});
时间: 2024-08-05 06:31:44

Android Studio通过Ksoap2连接WCF的相关文章

android studio 与手机连接调试

android studio 版本不同 连接手机方式有细微的不同,主要方式相似.介绍主要分手机和电脑两部分介绍. 一.手机部分 1.手机端下载一个"一键root权限获取",在安装的过程中需要安装KingRoot,获取手机root权限.网上有些说法,说手机侧不需要获取root权限,我自己尝试失败了.不过不是所有的手机都能获取root权限的.比如我手上的三星就没有能获取到,不过我的老手机多,这也就不是什么问题了 2.下载"ABD Wireless",这是一个adb服务.

Android studio Github 断开连接

http://blog.csdn.net/agoodcoolman/article/details/50562301 使用软件:Android studio svn:Github 从github直接从clone下来的项目,然后改吧改吧,发现不能传上去,原来连接的还是原博主的github不知道他的密码,肯定是传不上去的. 于是断开连接.断开连接开始….. 1.首先打开到项目下,到文件夹目录下.,就是你项目下的.idea文件,下的vcs配置文件  2.删除配置文件中的配置,去掉引号中的内容,如下图 

android studio 更新时连接服务器失败

windows下的解决方法: 如果是运行的是32位的android studio需要在修改一下文件: 在andriod studio的启动目录下.找到studio.exe.vmoptions这个文件.在后面加上 -Djava.net.preferIPv4Stack=true -Didea.updates.url=http://dl.google.com/android/studio/patches/updates.xml  -Didea.patches.url=http://dl.google.

Android Studio中 ADB WIFI插件进行无线调试实践

首先要确保电脑和手机在同一个局域网中.具体步骤如下 1.Android Studio中安装ADB WIFI插件.安装成功后重启Android Studio.(没有安装过插件的同仁,请自己搜索) 2.手机USB连接电脑,在Android Studio中,点击Tools->Android->ADB WIFI->ADB USE to WIFI即可 3. 然后拔掉USB,运行即可. 第2步中,可能出现的问题,无法连接手机的IP. 解决办法: 在Android Studio Terminal中连接

Android Studio遇到了“No USB devices or running emulators detected”

我这里遇到的情况是adb interface 错误:未安装,在这个网站: http://adbdriver.com/downloads/ 下载了Automated installation(Universal)之后,重新安装了adb interface之后,我的设备出现在了我们想要的地方. 或者 在电脑上下载一个应用宝,让它连接手机,它在下载一些文件连接上手机后,Android Studio也就连接上手机 原文地址:https://www.cnblogs.com/wangle1001986/p/

Android基于ksoap2调用WCF服务(二):Android篇

上一篇通过一个非常简单的例子,完成了一个WCF的服务.接下来介绍一下Android端. Android端调用WCF,采用基于ksoap2包来实现. 下载地址(这个需要fan qiang访问,你们懂的):https://code.google.com/p/ksoap2-android/ 我用的3.3.0版本,我传到csdn上,上面地址如果不能访问,可以用这个地址:http://download.csdn.net/detail/cnryc/7695437 程序的源代码下载地址:http://down

Android Studio 连接真机不识别

本人也是初学..写错的请大神多多批评指正! 不胜荣幸!! 强烈推荐使用真机测试..除非是最后关头要测试各个Android系统版本.. 本人遇到的连不上的原因有以下几种: 1  --   手机设置问题.开USB调试   方法:  手机设置 - 开发人员选项 - USB调试  - 勾选 2  --   数据线问题.  有的数据线只能用来充电,有的可以连接存储.识别方法很简单..插上机器有USB存储设备的提示的就可以用.另外数据线如果都露线皮了..就赶紧扔了.十块八块的总比你为这个破问题纠结一下午的好

Android Studio使用JDBC远程连接mysql的注意事项(附示例)

JDBC为java程序访问各种类型的关系型数据库提供了统一的接口,用户不必针对不同数据库写出不同的代码,但是使用JDBC必须得下载相应的驱动,比如我这里是要连接mysql,于是就到mysql官网去下载x相应驱动 https://dev.mysql.com/downloads/connector/j/ 这里我下载解压得到 mysql-connector-java-5.1.43-bin.jar 在Eclipse中新建java项目只需要Build Path --> Add External Archi

Mac 上Android Studio 无法连接、识别adb

参考来源: http://www.cnblogs.com/leehongee/p/4354803.html http://jingyan.baidu.com/article/e8cdb32b396dec37052bad25.html 我使用的mx5,插入电脑未被android studio识别. 这时候做两方面的操作.一方面更改手机上的调试信息 在辅助功能中选择“开发人员工具”,勾选“USB调试”,“允许模拟位置”这两项 接下来更改Mac电脑上的 一般的android连接mac 很方便不用安装驱