Android调用WCF

简介: 1. 构建服务端程序   using System.ServiceModel;namespace yournamespace{    [ServiceContract(Name = "HelloService", Namespace = "http://www.

1. 构建服务端程序

  

using System.ServiceModel;

namespace yournamespace
{
    [ServiceContract(Name =  " HelloService ", Namespace =  " http://www.master.haku ")]
     public  interface IHello
    {
        [OperationContract]
         string SayHello();
    }
}

 

 

namespace YourNameSpace
{
     public  class YourService    
    {
       public  string SayHello( string words)
      {
             return  " Hello  " + words;
      }
    }
}

 

2. 构建IIS网站宿主

  YourService.svc

<% @ServiceHost Debug = " true "  Service = " YourNameSpace.YourService " %>

 

  Web.config

<? xml version="1.0" encoding="utf-8" ?>
< configuration >
   < system.serviceModel >
     < serviceHostingEnvironment >
       < serviceActivations  >
         < add  relativeAddress ="YourService.svc"  service ="YourNameSpace.YourService" />
       </ 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 ="YourNameSpace.YourService"  behaviorConfiguration ="ServiceBehavior" >
         < host >
           < baseAddresses >
             < add  baseAddress ="http://localhost:59173/YourService" />
           </ baseAddresses >
         </ host >
         < endpoint  binding ="basicHttpBinding"  contract ="YourNameSpace.你的服务契约接口" >
           < identity >
             < dns  value ="localhost"   />
           </ identity >
         </ endpoint >
       </ service >
     </ services >

     < behaviors >
       < serviceBehaviors >
         < behavior  name ="ServiceBehavior" >
           < serviceMetadata  httpGetEnabled ="true"   />
           < serviceDebug  includeExceptionDetailInFaults ="true"   />
         </ behavior >
       </ serviceBehaviors >
     </ behaviors >
   </ system.serviceModel >
   < system.web >
     < compilation  debug ="true"   />
   </ system.web >
</ configuration >

 

3. 寄宿服务

  把网站发布到web服务器, 指定网站虚拟目录指向该目录

  如果你能够访问http://你的IP:端口/虚拟目录/服务.svc

  那么,恭喜你,你的服务端成功了!

 

4. 使用ksoap2调用WCF

  去ksoap2官网 

  http://code.google.com/p/ksoap2-android/ 下载最新jar

 

5. 在Eclipse中新建一个Java项目,测试你的服务

  新建一个接口, 用于专门读取WCF返回的SoapObject对象

  ISoapService

package junit.soap.wcf;

import org.ksoap2.serialization.SoapObject;

public  interface ISoapService {
    SoapObject LoadResult();
}

 

   HelloService

package junit.soap.wcf;

import java.io.IOException;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

public  class HelloService  implements ISoapService {
     private  static  final String NameSpace = "http://www.master.haku";
     private  static  final String URL = "http://你的服务器/虚拟目录/你的服务.svc";
     private  static  final String SOAP_ACTION = "http://www.master.haku/你的服务/SayHello";
     private  static  final String MethodName = "SayHello";
    
     private String words;
    
     public HelloService(String words) {
         this.words = words;
    }
    
     public SoapObject LoadResult() {
        SoapObject soapObject =  new SoapObject(NameSpace, MethodName);
        soapObject.addProperty("words", words);
        
        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;
    }
}

 

  测试程序

package junit.soap.wcf;

import org.ksoap2.serialization.SoapObject;

public  class HelloWcfTest {
     public  static  void main(String[] args) {
        HelloService service =  new HelloService("Master HaKu");
        SoapObject result = service.LoadResult();
        
        System.out.println("WCF返回的数据是:" + result.getProperty(0));
    }
}

  

   经过测试成功

   运行结果:

   Hello Master HaKu

 

6. Android客户端测试

 

package david.android.wcf;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.ksoap2.serialization.SoapObject;

public  class AndroidWcfDemoActivity  extends Activity {
     private Button mButton1;
     private TextView text;

     /**  Called when the activity is first created.  */
    @Override
     public  void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton1 = (Button) findViewById(R.id.myButton1);
        text = (TextView)  this.findViewById(R.id.show);

        mButton1.setOnClickListener( new Button.OnClickListener() {
            @Override
             public  void onClick(View v) {
                
                 HelloService service =  new HelloService("Master HaKu");
                                SoapObject result = service.LoadResult();

                text.setText("WCF返回的数据是:" + result.getProperty(0));
            }
        });
    }
}

 

 

7. 最后运行结果

 

 

 

目录
相关文章
|
移动开发 Java Android开发
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
1871 0
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
|
JavaScript 前端开发 Android开发
JS(Javascript)调用Android原生方法三步走
JS(Javascript)调用Android原生方法三步走
629 0
|
Android开发
Android Studio中添加Flutter模板直接调用
Android Studio中添加Flutter模板直接调用
222 0
Android Studio中添加Flutter模板直接调用
|
Java 编译器 API
Android使用NDK(从java调用本地函数'JNI')
Android使用NDK(从java调用本地函数'JNI')
258 0
Android使用NDK(从java调用本地函数'JNI')
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
75 0
|
Android开发
Android实现调用系统相机录像及实现录音
Android实现调用系统相机录像及实现录音
706 0
|
定位技术 开发工具 Android开发
Android 地图导航调用百度地图、高德地图、腾讯地图
Android 地图导航调用百度地图、高德地图、腾讯地图
1300 0
Android 地图导航调用百度地图、高德地图、腾讯地图
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
132 0
|
Android开发
【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )
【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )
233 0
【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )
|
算法 Android开发 数据安全/隐私保护
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
521 0
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    Android历史版本与APK文件结构
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 10
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 1
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    25
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    28
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    29
  • 4
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    40
  • 5
    Android历史版本与APK文件结构
    126
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 7
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    27
  • 8
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    60
  • 9
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 10
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73