Wince 中访问WCF服务
由于本文并非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服务的更多相关文章
- WCF分布式4:客户端访问寄宿在IIS中的WCF服务
部署过程比较简单,新建一个站点,指向服务的物理路径,设置一个端口.即可. 新建的站点对应一个应用程序池,设置应用程序池中的.NET版本为4.0 写一个测试客户端,访问IIS中的WCF服务,可能会出现, ...
- SharePoint 2013 中自定义WCF服务
在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...
- 客户端使用自定义代理类访问WCF服务 z
通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或 web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否 ...
- ajax调用handler,使用HttpWebRequest访问WCF服务
引言 随着手机及移动设备的普及,移动端的应用也进入了热潮.以前PC端的门户网站,大多也均推出了适配移动设备的网站或者APP,再差的也注册了个公众号.在移动应用开发中,目前据我所了解到的解决方案有:1. ...
- 客户端使用自定义代理类访问WCF服务
通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否简 ...
- Android访问WCF服务(使用json实现参数传递)
经过多日努力, 终于勉强弄明白了Android访问WCF服务的方法. 服务端实现 一, 实现服务. 操作契约 [ServiceContract] public interface IService { ...
- iPhone中调用WCF服务
本文介绍的是跨平台iPhone中调用WCF服务,WCF是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由 .NET Framework 3.0+开始引入 iPhone中调用WC ...
- Ajax跨域访问wcf服务中所遇到的问题总结。
工具说明:vs2012,sql server 2008R2 1.首先,通过vs2012建立一个wcf服务项目,建立好之后.再新开一个vs2012 建立web项目,通过jQuery的ajax方法访问服务 ...
- 创建寄宿在Windows服务中的WCF服务
1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...
随机推荐
- .net中使用mysql回滚和sqlserver回滚的区别
关于sqlserver事务和mysql事务 首先这是一种方法 public static int GetExecteQuery() { SqlConnection ...
- mysql自增ID过大修改方法
执行sql: alter table table_name AUTO_INCREMENT=100
- VS2012打开Web项目提示《ASP.NET 4.X 尚未在Web服务器上注册。你需要手动将...》解决方案
用VS12创建的WEB项目时,默认使用IIS Experess开发服务器,但是每次打开会提示如下提示 但是同一个项目用VS13或VS15打开时,就能正常打开,不会出现以上提示信息. 怀疑是IIS Ex ...
- linux系统安装redis服务器与php redis扩展
一 安装redis服务 1更新yum源 CentOS/RHEL 7.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-lat ...
- python3 使用pyinstaller打包可执行程序
步骤 1.使用pip安装pyinstaller pip install pyinstaller 2. 使用pyinstaller打包程序 pyinstaller -F xxx.py pyinstall ...
- Oracle数据库sql语句
1.创建用户.赋权限.删除用户 create user test identified by test default test users temporary tablespace temp; gr ...
- 通达信k线颜色设置
通达信的k线函数没有颜色选项.如果想要画颜色可以使用STICKLINE函数来覆盖当前k线这样也是可以满足需求. 第一步画针 STICKLINE(条件 , L , H , 0 , 0 ) , 颜色; 第 ...
- JS常见算法题目
最近收集了几个经典JS题目,比较有代表性,分享一下: 1.xiaoshuo-ss-sfff-fe 变为驼峰xiaoshuoSsSfffFe function getCamelCase(str ...
- Linux(CentOS7)设置自动备份数据库到阿里云OSS
环境:阿里云服务器CentOS7.4 + MySQL5.6 基本思路: 1.编写shell脚本,备份数据库到指定目录下 2.编写Python脚本,把文件上传到OSS 3.把shell脚本和Python ...
- 【python 虚拟环境 virtualenv的配置】
该目录内生成一个虚目录: #运行activcate下的shell脚本,激活虚拟环境 #pip python包管理器