wcf-请问android/IOS如何使用WCF?

问题描述

请问android/IOS如何使用WCF?

如题,新手接触app发现无法直接操作数据库,之前都是做网站,看了一些帖子发现需要使用webserver 于是就做了一个wcf 心想调用起来应该不难,但是由于java基础不好 软件android studio导入jar 也找不到方法...ios更是一筹莫展,期望有具体点的方法,指导一下到底如何调用wcf

解决方案

wcf配置为支持http绑定
最好配置为使用soap
http://www.cnblogs.com/iscode/archive/2012/05/09/2491513.html
这样用js或者ios去调用,就是标准的方法了。

解决方案二:

简单记录一下使用实体对象作为参数的传递!

在服务端使用webservice时是没有问题的,但是当替换成wcf时就出现传递的参数无法序列化的问题!

服务端代码:

Service1.svc

[csharp] view plaincopy
01.namespace WcfTeacherService

02.{

03. // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。

04. // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。

05. public class Service1 : IService1

06. {

07. public string DoWork(TestModel model)

08. {

09.

10. log4net.LogManager.GetLogger(this.GetType()).Error(model.AA);

11. return model.AA;

12. }

13. }

14.}

TestModel.cs

[csharp] view plaincopy
01.using System;

02.using System.Collections.Generic;

03.using System.Linq;

04.using System.Web;

05.using System.ServiceModel;

06.using System.Runtime.Serialization;

07.namespace WcfTeacherService

08.{

09. public class TestModel

10. {

11. public string AA { get; set; }

12. }

13.}

Android客户端使用http://www.wsdl2code.com/pages/Home.aspx来自动生成所需要的代码;调用如下:

[java] view plaincopy
01.@Override

02.protected void onCreate(Bundle savedInstanceState) {

03. super.onCreate(savedInstanceState);

04. setContentView(R.layout.activity_main);

05. Service1 service = new Service1();

06. TestModel model = new TestModel();

07. model.aA = "123";

08.

09. service.eventHandler = new IWsdl2CodeEvents() {

10. @Override

11. public void Wsdl2CodeFinished(String methodName, Object Data) {

12. @SuppressWarnings("unused")

13. String aa = methodName;

14. }

15.

16. @Override

17. public void Wsdl2CodeStartedRequest() {

18. }

19.

20. @Override

21. public void Wsdl2CodeFinishedWithException(Exception ex) {

22. }

23.

24. @Override

25. public void Wsdl2CodeEndedRequest() {

26. }

27. };

28. try {

29. service.DoWorkAsync(model);

30. } catch (Exception e) {

31. // TODO Auto-generated catch block

32. e.printStackTrace();

33. }

34.}

在WCF中以值类型作为参数,如:int,string,bool等都没有问题,但是自定义实体对象作为参数时,总是获取不到值!后来经过fiddler抓包反复对比,原来是TestModel的命名空间和DoWork方法的命名空间不一致所致!

所以要修改上面的TestModel.cs;在类名上面加上命名空间的声明

[csharp] view plaincopy
01.using System;

02.using System.Collections.Generic;

03.using System.Linq;

04.using System.Web;

05.using System.ServiceModel;

06.using System.Runtime.Serialization;

07.namespace WcfTeacherService

08.{

09. [DataContract(Namespace="http://tempuri.org/")]

10. public class TestModel

11. {

12. [DataMember]

13. public string AA { get; set; }

14. }

15.}

同时在接口上也加上相同的命名空间即可

[csharp] view plaincopy
01.namespace WcfTeacherService

02.{

03. // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。

04. [ServiceContract(Namespace="http://tempuri.org/"]

05. public interface IService1

06. {

07. [OperationContract]

08. string DoWork(TestModel model);

09. }

10.}

只要修改服务端的命名空间即可,ios和android端自动生成的代码无须变化!

记录起来挺简单的,就这么简单的问题可是调试了一天多呀
http://blog.csdn.net/wuwo333/article/details/42873415 你看是不是这个?

解决方案三:

看我这篇博客,有你想要的完整代码。http://blog.csdn.net/chinacsharper/article/details/38386779

时间: 2024-12-09 12:04:00

wcf-请问android/IOS如何使用WCF?的相关文章

(提问)Android通过Ksoap2链接wcf上传文件的功能

问题描述 Android通过Ksoap2链接wcf上传文件的功能应该如何实现,求案例 解决方案 解决方案二:同求,楼主这个问题解决了么?我最近也在做这个

请问Android前置摄像头录制的视频,怎么处理“镜面”问题?

问题描述 请问Android前置摄像头录制的视频,怎么处理"镜面"问题? 我在用前置摄像头录制的视频,播放出来左右"反"了,IOS的同事是将视频的每一祯图片进行了处理,我在Android API没有找到相关的处理方法,求大神们支招

Silverlight与WCF之间的通信(6)silverlight+wcf+tcp视频通信[1]单工模式

其实严格来讲,这个实现并非真正意义上的视频通信,既不是P2P的,也没有很高的性能,因为基本上 是两个客户端同时往服务器上传递视频信息,然后由服务器进行中转到对方. 重点在于两点 IIS根目录下放clientaccesspolicy.xml文件 注意服务中定义数据量大小2147483646,否则有可能传递不了 这边是单向的客户端定时向服务器传递带聊天标识的数据流 [DataContract] public class UserVideo { [DataMember] public string U

WCF分布式开发步步为赢(1):WCF分布式框架基础概念

众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推出了自己的中间件产品,比如Oracle Fusion和 SAP NetWeaver,IBM.BEA等企业也推出了自己基于SOA的解决方案.基于J2EE平台的SOA架构设计中的一个重要概念就是EJB企业服务总线,作用是实现各个系统的数据交互.而.NET平台上,WCF就是微软为各个系统的数据交互提供通讯

请问android的剪贴板内容监听器会不会内存泄露

问题描述 请问android的剪贴板内容监听器会不会内存泄露 if (clipboard == null){ clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { @Override public void onPrimaryCl

在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤

原文:在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤 Xamarin 配置手册和离线包下载  http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安装的windows10 + vs2013 with update 4. 2. 安装Java SDK,按照Next一步步安装,此处省略,如下图: 3. 安装Android SDK:因为在线安装的

第三方应用-请问 Android 直接 跳转微信公众号怎么解决?

问题描述 请问 Android 直接 跳转微信公众号怎么解决? 如题 请问 Android 直接 跳转微信公众号怎么解决? 就是Android第三方应用中点击按钮跳转到微信公众号关注界面,或者会话界面 新手求解答 解决方案 Android - 跳转微信公众号 解决方案二: 之前有人问过这个问题,我也回复过:http://ask.csdn.net/questions/199770 如果想打开微信里面某一个页面,你可以反编译微信androidmainfest.xml看看定义的Activity,然后通

WCF后续之旅(9): 通过WCF双向通信实现Session管理[下篇]

一.Session Management Service的实现 现在我们来看看Session Management真正的实现,和我以前的例子不同,我不是把所有的实现都写在WCF service上,而是定义了另一个class来实现所有的业务逻辑:SessionManager.我们分析一下具体的实现逻辑. 1: namespace Artech.SessionManagement.Service 2: { 3: public static class SessionManager 4: { 5: p

WCF后续之旅(4):WCF Extension Point 概览

在本系列的每篇文章中,我多次提到WCF是一个极具可扩展性的分布是消息通信框架.为了让读者对WCF Extension有一个总体的的认识,在这里我会简单列举了我们经常使用的绝大部分的扩展点,以及通过这些扩展点能够解决实现项目开发中的那些问题. 有一点需要特别提醒的是:对WCF extensions的灵活应用依赖于你对channel layer和service mode dispatching system的深入理解.所以,如果你对channel layer不甚了解,可以参阅本系列的第一个部分(WC