安卓与wcf通信 json实现



在IT行业中,Android和WCF(Windows Communication Foundation)之间的通信是一项常见的需求,特别是在构建跨平台应用程序时。本文将深入探讨如何使用JSON(JavaScript Object Notation)作为数据交换格式,实现在Android客户端和WCF服务之间的有效通信。 让我们了解JSON。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语法,但却是语言无关的,这使得JSON成为Android和WCF之间理想的通信媒介。 在Android端,你需要使用HTTP库来发起网络请求,如使用OkHttp或Retrofit。这些库允许你发送POST或GET请求,并携带JSON格式的数据。例如,你可以创建一个JSONObject,将数据封装其中,然后通过HTTP请求发送到WCF服务。以下是一个简单的示例: ```java // 创建JSONObject JSONObject data = new JSONObject(); data.put("key1", "value1"); data.put("key2", "value2"); // 使用OkHttp发送POST请求 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://your-wcf-service-url") .post(RequestBody.create(MediaType.parse("application/json"), data.toString())) .build(); Response response = client.newCall(request).execute(); ``` 在WCF端,你需要配置服务以支持JSON序列化。在服务接口定义中,可以指定使用WebInvoke属性,并设置RequestBodyFormat为Json。例如: ```csharp [ServiceContract] public interface IMyService { [OperationContract] [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json)] string ProcessData(MyDataContract data); } ``` 同时,为了解析接收到的JSON数据,你需要定义相应的数据契约类(DataContract),匹配JSON中的键值对: ```csharp [DataContract] public class MyDataContract { [DataMember] public string Key1 { get; set; } [DataMember] public string Key2 { get; set; } } ``` 在实现服务时,你只需从请求中读取JSON数据,将其转换为对应的C#对象,处理数据,然后返回结果。使用`DataContractJsonSerializer`可以方便地完成这个过程: ```csharp public class MyServiceImpl : IMyService { public string ProcessData(MyDataContract data) { // 处理数据 // ... return "处理成功"; } } ``` 配置WCF服务以监听JSON请求通常涉及修改服务配置文件(web.config),启用JSON绑定并指定相应的终结点。确保添加了`webHttpBinding`和`webHttp`行为,如下所示: ```xml <bindings> <webHttpBinding> <binding name="JsonBinding"> <security mode="None" /> </binding> </webHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="webBehavior"> <webHttp defaultOutgoingResponseFormat="Json" helpEnabled="true" /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior> <!-- 忽略此处的其他配置 --> </behavior> </serviceBehaviors> </behaviors> <services> <service name="YourNamespace.MyServiceImpl"> <endpoint address="" binding="webHttpBinding" bindingConfiguration="JsonBinding" contract="YourNamespace.IMyService" behaviorConfiguration="webBehavior" /> </service> </services> ``` 别忘了在Android客户端处理WCF服务返回的JSON响应。你可以使用Gson或Jackson等库将JSON字符串转换为Java对象。 总结起来,通过JSON,Android应用可以与WCF服务进行高效、灵活的通信。在Android端,使用HTTP库发送JSON请求,而在WCF服务端,配置支持JSON的终结点,并解析接收到的JSON数据。通过这种方式,你可以实现复杂对象的传递,使得Android与WCF服务之间的交互变得简单而强大。



























































































































































- 1

- wabzsy2016-09-23可以 有用~
- rongxiangjun2013-12-05还可以,帮助到了不少

- 粉丝: 1w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 嵌入式系统复习题1.doc
- 沁阳市第一中学多媒体设备及计算机设备采购项目.doc
- 肯德基网络营销策划分析ppt课件.ppt
- 有答案的《工程项目管理》复习题.doc
- 石油总公司中下游工程建设项目管理规定教材.doc
- 某自动化股份公司IEC61850技术培训.pptx
- 云计算建设方案样本.doc
- 工程网络计划网络图.ppt
- 数学建模网络赛特等奖土地储备风险评估方案.doc
- 网络故障分析报告.pdf
- 李宁电子商务方案解读.ppt
- 网络时间协议简介.doc
- (源码)基于C++的Vive Lighthouse室内定位传感器系统.zip
- 两个开挂的Excel同步数据到Word技巧!(联动)get√.pdf
- 智慧城市建设带动实体经济发展.docx
- 三级网络第一章的重点(最新整理).pdf


