由于本文并非WinCE开发普及篇,所以一些WinCE开发和WCF开发的基础还请移步百度和谷歌寻找答案,然后结合本文开发出WinCE中如何访问WCF,谢谢。

开发环境

IDE:Visual Studio 2008 (2010、2012、2013目前都不支持)

OS:Win 7 (64位)

Tools:ActiveSync win7 v6.1(设备中心,给Pocket PC 2003模拟器提供网络)

模拟器网络连接攻略一份:http://www.jb51.net/softjc/42088.html

创建WinCE项目

请恕本文并非WinCE开发普及篇,所以这些请百度吧。

WCF服务端

app.config中关键代码

<service behaviorConfiguration="SystemDispatchServiceForPDABehavior" name="SystemManageServiceLibrary.SystemDispatchServiceForPDA">
<!--PDA系统分配-->
<endpoint address="http://localhost:20003/SystemDispatchForPDA/SystemDispatchServiceForPDA"
binding="webHttpBinding"
contract="SystemManageServiceLibrary.SystemDispatch.ISystemDispatchServiceForPDA" >
</endpoint>
<!--PDA系统分配元数据-->
<endpoint address="http://localhost:20003/SystemDispatchForPDA/SystemDispatchServiceForPDA/mex"
binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:20003/SystemDispatchForPDA"/>
</baseAddresses>
<timeouts openTimeout="00:00:30" />
</host>
</service>

服务契约 - 公布WCF REST(详细的可以百度搜索 WCF REST)

    [ServiceContract]
public interface ISystemDispatchServiceForPDA
{
/// <summary>
/// PDA获取集群信息
/// </summary>
/// <param name="strPDA_IMEI">PDA内部出厂序号</param>
/// <returns></returns>
[OperationContract]
//UriTemplate 实际就是通过http协议发送请求的url规则,把{strPDA_IMEI}替换成真实的PDA串号即可
[WebGet(UriTemplate = "GetClusterInfo/{strPDA_IMEI}")]
CLUSTER GetClusterInfo(string strPDA_IMEI);
}

WinCE

HttpWrapper.cs - Http请求的封装,访问WCF提供的REST服务

    public class HttpWrapper
{
public static string SendRequest(string url)
{
HttpWebResponse response = null;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.AllowWriteStreamBuffering = false;
request.KeepAlive = true;
request.ContentType = "application/x-www-form-urlencoded"; // 接收返回的页面
response = request.GetResponse() as HttpWebResponse;
Stream responseStream = response.GetResponseStream();
StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
string strResult = reader.ReadToEnd();
reader.Close();
response.Close();
return strResult;
}
}

XmlAdapter.cs - Xml适配器,用于将Xml转换成类

    public class XmlAdapter
{
public static T ConvertToClass<T>(string strXML) where T : class
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); MemoryStream reader = new MemoryStream(Encoding.UTF8.GetBytes(strXML)); T obj = xmlSerializer.Deserialize(reader) as T; reader.Dispose(); return obj;
}
}

调用方法

        private static string URL = "http://ip:20003/SystemDispatchForPDA/SystemDispatchServiceForPDA/";

        public static CLUSTER GetClusterInfo(string strPDA_IMEI)
{
string strResponse = HttpWrapper.SendRequest(URL + "GetClusterInfo/" + strPDA_IMEI); CLUSTER cluster = XmlAdapter.ConvertToClass<CLUSTER>(strResponse); return cluster;
}

真正需要注意的其实就是几点:

1.安装设备中心

2.设置模拟器网络连接

3.WCF REST

4.WinCE解析WCF返回的XML,以及如何拼接访问的URL

Wince 中访问WCF服务的更多相关文章

  1. WCF分布式4:客户端访问寄宿在IIS中的WCF服务

    部署过程比较简单,新建一个站点,指向服务的物理路径,设置一个端口.即可. 新建的站点对应一个应用程序池,设置应用程序池中的.NET版本为4.0 写一个测试客户端,访问IIS中的WCF服务,可能会出现, ...

  2. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  3. 客户端使用自定义代理类访问WCF服务 z

    通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或 web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否 ...

  4. ajax调用handler,使用HttpWebRequest访问WCF服务

    引言 随着手机及移动设备的普及,移动端的应用也进入了热潮.以前PC端的门户网站,大多也均推出了适配移动设备的网站或者APP,再差的也注册了个公众号.在移动应用开发中,目前据我所了解到的解决方案有:1. ...

  5. 客户端使用自定义代理类访问WCF服务

    通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否简 ...

  6. Android访问WCF服务(使用json实现参数传递)

    经过多日努力, 终于勉强弄明白了Android访问WCF服务的方法. 服务端实现 一, 实现服务. 操作契约 [ServiceContract] public interface IService { ...

  7. iPhone中调用WCF服务

    本文介绍的是跨平台iPhone中调用WCF服务,WCF是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由 .NET Framework 3.0+开始引入 iPhone中调用WC ...

  8. Ajax跨域访问wcf服务中所遇到的问题总结。

    工具说明:vs2012,sql server 2008R2 1.首先,通过vs2012建立一个wcf服务项目,建立好之后.再新开一个vs2012 建立web项目,通过jQuery的ajax方法访问服务 ...

  9. 创建寄宿在Windows服务中的WCF服务

    1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...

随机推荐

  1. linq项目中例子实例

    在mvc项目中 var ls = (from i in gt.vendor_login                  join j in gt.vendor on i.vendor_id equa ...

  2. windows安装PHP IIS MYSQL

    https://www.cnblogs.com/huodong/p/4310425.html

  3. Linux Ubuntu安装sogou中文输入法

    在linux下开发,有时还是需要使用中文输入法的,每次安装的时候都觉得痛苦,这次做下记录,方便下次安装. 安装fcitx 安装sogou输入法之前,需要安装fcitx(Free Chinese Inp ...

  4. nginx 反向代理 proxy_pass 及对比nginx与haproxy反向代理服务器功能、性能的优劣

    1.使用 proxy 去请求另一个域名下的资源,如果跨域资源也部署在同一台机器上,我们甚至可以 proxy 到 127.0.0.1,比如: location /api { proxy_pass htt ...

  5. 面试 : C语言 功底 被 鄙视了

    第一道:被鄙视 的 C语言语法问题 请看 下面 程序 : 错误程序: void GetMemory( char *p ){ p = (char *) malloc( 100 );}void Test( ...

  6. linux内存管理--用户空间和内核空间

    关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间.用户空间从0到3G(0xc0000000),内核空间占据3G到4G.用户进程通常情况下只能访问用户空间的虚拟 ...

  7. MySql 5.7.21免安装版本win10下的配置

    1.解压到想要安装的位置,创建my.ini文件 my.ini的内容如下 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设 ...

  8. 【python 虚拟环境 virtualenv的配置】

    该目录内生成一个虚目录: #运行activcate下的shell脚本,激活虚拟环境 #pip  python包管理器

  9. Redis之Redis主从复制

    概念: 主从复制就是主机数据更新后,根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 配置: (1)“一主二仆”策略 准备三台redis服务器 ...

  10. windows7平台 nginx+python 环境搭建

    参考了这篇文章,感谢原文作者:https://blog.csdn.net/foxgod/article/details/78929201 最近正在学习Python,发现除了写一点py脚本在idlex上 ...