c++ builder 编写web services容易遇到的小问题

由于项目需要,要编写webservices应用,网上这方面的资料不是太多。现把我写程序时候遇到的问题粗略记录如下:

 

 

第一步,在已有项目中引入webservices:

  

    在C++ builder 菜单中选择 File-》New-》Other-》打开New Items

选中WebServices页中的 WSDL Importer,打开WSDL Import Wizard,在下面的URL中输入服务的地址(如:

http://127.0.0.1/Service.asmx?wsdl)。注意后面加上的"?wsdl”。这样就生成了Service.cpp  和 Service.h

两个文件。

 

第二步,在项目中使用服务:

 

   首先包含头文件,#include "Service.h"。 声明变量, _di_ServiceSoap WebService ;使用相应的服务。这时会

遇到问题,就是给服务传参数,服务接收不到。经过查找资料,最终在台湾的一个网站中找到解决办法。

 

第三步,编辑生成的Service.cpp:

 

  生成的文件中最后有一段如下代码:

static void RegTypes()
{
  /* ServiceSoap */
  InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
  InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
}

在后面添加一行,改成这样:

static void RegTypes()
{
  /* ServiceSoap */
  InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
  InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
  InvRegistry()->RegisterInvokeOptions(__interfaceTypeinfo(ServiceSoap), ioDocument);
}

 

至此,服务和应用已经可以正常的接收和返回“英文,数字”。但是,如果是中文就会出现乱码,不能正常处理。接着查阅资料,都

说是字符编码问题,改变默认的字符编码可以解决,经过试验,都没有解决。经过测试,找到一个解决办法,但不一定是最好的方法。

就是把所有的中文参数或是返回值,重新编码,应用或服务接收到后,再解码。

 

 

已标记关键词 清除标记
相关推荐
光盘中的实例程序在Windows 98和C++ Builder 5.0环境下编译、连接、运行通过。为了使程序正常运行,一般要将光盘上的文件拷贝到硬盘中,而且注意有些程序对运行环境的特殊要求。只有为数不多几个程序能够直接在光盘上运行,当目标程序运行不正常,源程序装入或者调试期间出现异常提示时,可能有如下原因: 1. 其中包括写入操作的程序,在光盘中不能正常运行。 2. 程序可能需要C++ Builder 5.0的运行包中的某些文件的支持,而此时未安装C++ Builder5.0系统。 3. 与数据库有关的程序要求事先建立数据源名DNS或者在数据库引擎BDE中建立数据库的别名,否则程序运行异常。 4. 程序中涉及到特殊的ActiveX控件或者组件应事先安装或者注册,否则不能正常工作。 5. 程序的运行需要操作系统的支持,如网络编程需要TCP/IP协议的支持,有的还需要IIS支持,否则不能正常工作。 6. 程序运行需要硬件支持,设备使用上发生冲突可导致程序运行失败。另外有的源程序如果没有构建必要的调试平台,则程序将无法调试。 为了避免出现上述问题,在运行某个目标程序之前或者调试某个源程序之前,应仔细查阅书中有关运行环境方面的说明。 下面对各个程序运行前的注意事项给出简要说明: 第1章 系统与窗体 1.1 --- 获取系统信息 运行System.exe后,在弹出的窗体中,单击不同按钮完成不同功能。 1.2 --- 操作系统注册表 运行Registry.exe后,在弹出的窗体中,单击不同按钮完成不同功能。 1.3 --- 窗体设计技巧 运行Windows.exe后,在弹出的窗体中,单击不同按钮完成不同功能。其中在透明窗体中,右击后弹出退出菜单。 1.4 --- 任务栏编程 运行NotifyForm.exe后,在任务栏中出现闪烁的图标,单击弹出窗体,右击弹出菜单。 1.5 --- 状态栏编程 运行StatusBar.exe后,在移动鼠标区内移动鼠标,观察鼠标的当前位置。 第2章 文件操作 2.1 --- 文件属性管理 直接运行FileAttr.exe。 2.2 --- 文件的复制 运行FileCopy.exe后,选择源文件和目的文件。 2.3 --- 汉字字模提取程序 运行GetFont.exe时,一定要将字库文件Hzk16拷贝到当前目录中。 2.4 --- 写字板 直接运行Word.exe。 第3章 图形图像编程 3.1 --- 颜色拾取器 直接运行PickColor.exe。 3.2 --- 图像的淡入和淡出 运行PictureFade.exe时,一定要将文件t1.bmp和t2.bmp拷贝到当前目录中。 3.3 --- 图像特技 运行Special.exe时,一定要将文件t1.bmp拷贝到当前目录中。 3.4 --- 不规则图形的动画技术 运行MovePicture.exe时,一定要将文件SHIP.bmp、SHIPMASK.bmp和BACKGROUND.bmp拷贝到当前目录中。 3.5 --- OpenGL编程 直接运行opengl.exe。 第4章 数据库编程 4.1 --- 一个简单的数据库应用示例程序 运行Marine文件夹中的Marine.exe。涉及C++ Builder5.0默认安装中的BDE的数据库别名,详情请参阅书中有关内容。 4.2 --- 一个数据库组合条件查询程序 运行Recipe文件夹中Recipe.exe。 4.3 --- 一个web网站主页数据库维护程序 运行NewsPage文件夹中的NewsPage.exe。程序运行与系统的ODBC与支持ASP网页WEB服务器有关,详情请参阅书中有关内容。 第5章 网络编程 5.1 --- 建立自己的Web浏览器 运行BCBWb.exe后,请在地址栏中输入网址或超文本文件。 5.2 --- 网上传输数据程序 如果在一台机器上运行NetData.exe时,要将远程主机设为127.0.0.1;如果在两台机器上运行时,将远程主机分别设为对方的IP地址。本例只支持文本文件传输,对于其他数据文件传输,将显示错误。 5.3 --- 远程屏幕抓取程序 如果在一台机器上测试,先运行client.exe,再运行Server.exe。受控机地址为127.0.0.1,单击“抓图”按钮即可。如果在两台机器上运行,受控机上运行client.exe程序,主控机上运行Server.exe程序;受控机地址为远程计算机的IP地址,单击“抓图”按钮即可。 5.4 --- 编制一个邮件收发程序 运行Mail.exe后,主机的IP要输入具有邮件服务功能的服务器的IP地址,而且在服务器上已经有自己的邮箱,应正确输入用户名和密码,否则该程序无法完成邮件的接收功能。在查看邮件时,如果有附件,将自动保存在当前目录中。 5.5 --- NetBios编程 运行NetBios.exe。 第6章 多线程编程 6.1 --- 一个简单多线程示例程序及多线程常见问题介绍 运行SimpleThread文件夹中的SimpleThread.exe。 6.2 --- 一个基于线程的文件搜索程序 运行FileSearch文件夹中的FileSearch.exe。在IDE中调试源程序时,与Delphi控件Pbfolder有关的安装、使用等有关问题,请仔细参阅书中的说明。 6.3 --- 一个基于线程的异步串行通信程序 运行CommApi文件夹中的CommApi.exe。程序调试涉及到计算机硬件,请仔细参阅书中的有关说明。 第7章 COM编程 7.1 --- 一个基于COM对象的服务器和客户机程序 运行ComClient.exe前,一定要注册ComSever.dll,否则会出错。 7.2 --- 利用OLE自动化编程的实用程序 运行SendTextToWord.exe前,你的计算机中一定要安装Word97字处理软件,否则会出错。 7.3 --- 编制一个图像浏览器的ActiveX控件 将生成的文件ImageViewProj1.cab、ImageViewProj1.inf和ImageViewProj1.htm拷贝到C:\Inetpub\wwwroot目录下,若要在网上浏览,必须启动个人Web管理器。 第8章 综合实例 8.1 --- 支持多文件播放的音频播放器 运行AudioPlayer文件夹中的AudioPlayer.exe。 8.2 --- 功能强大的画图板 运行Draw.exe。 8.3 --- 一个基于ISAPI编程的留言板 1. 将Mydbf.dbf和Mydbf.db数据库文件拷贝到C盘根目录。 2. 将Images目录下的文件拷贝到Inetpub \images\目录下。 3. 将Write.dll和Display.dll文件拷贝到Inetpub \scripts\目录下。 4. 将index.htm、index1.htm、index2.htm和Moudal.htm文件拷贝到Inetpub \wwwroot\目录下。 启动个人Web管理器程序,若你的计算机中没有安装Personal Web Server程序,则安装该程序后运行本程序。启动浏览器程序,在地址栏中输入“http://czl/index.htm”。 8.4 --- 一个基于MD110程控交换机的计费程序 运行Jifei文件夹中的Jifei.exe.程序的运行、调试与计算机硬件、模拟环境有关,也涉及到用数据库引擎建立数据库别名等问题,详情请参阅书中有关内容。 如果您对本书的内容或者附随光盘中程序有何疑问,或者需要深入地讨论某个技术问题,请用电子邮件直接与我们联系。不足之处,欢迎您批评指正。我们的电子邮件地址是: E-Mail:zhangwanli@yeah.net czl0607@sina.com
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页