ATL web service 传 STL的问题(菜鸟问题)很急~~
本人是第一次用web service, 打算用Vector传递一个数组,但是不知道为什么编译不过,请大侠们赐教// Webservice.h : 定义 ATL Server 请求处理程序类
//
#pragma once
#include <string>
#include <vector>
using namespace std;
namespace WebserviceService
{
// webservice 的所有 struct、enum 和 typedef 应进入命名空间
struct Program
{
string name; //文件名称
string path; //文件所在绝对路径
unsigned int CodeRate; //视频码率
unsigned int FileID; //作为文件的标识,后续进度上报,upload都以该ID作为标识,由ABV提供
unsigned int fileSize; //文件大小,会用于进度上报
string pushStart; //开始推送时间
string pushEnd; //推送结束时间
string type; //文件类型,ABV提供
} ;
// IWebserviceService - Web 服务接口声明
//
[
uuid("4836515D-5C13-4252-A147-296DAFB845F2"),
object
]
__inte易做图ce IWebserviceService
{
// 声明 Web 服务方法及其 in 参数和 out 参数
[id(1)] HRESULT SetProgram([in] vector<Program> programlist, [out, retval] BSTR *ErrorInfo);
// TODO: 在此添加其他 Web 服务方法
};
// WebserviceService - Web 服务实现
//
[
request_handler(name="Default", sdl="GenWebserviceWSDL"),
soap_handler(
name="WebserviceService",
namespace="urn:WebserviceService",
protocol="soap"
)
]
class CWebserviceService :
public IWebserviceService
{
public:
// 这是一个示例 Web 服务方法,它显示如何使用
// soap_method 属性将方法公开为 Web 方法
[ soap_method ]
HRESULT SetProgram(/*[in]*/ vector<Program> programlist, /*[out, retval]*/ BSTR *ErrorInfo)
{
return S_OK;
}
// TODO: 在此添加其他 Web 服务方法
}; // 类 CWebserviceService
} // 命名空间 WebserviceService
--------------------编程问答-------------------- 大侠们都下班了么? --------------------编程问答-------------------- 这样是不行的...
--------------------编程问答-------------------- 为什么不行,该怎么做啊 ? --------------------编程问答-------------------- 理解 web service 的原理,你就清楚了
ws 是通过xml交换信息,也就是所谓的xml序列化
所以所有类型要求能够用xml 表示 ,且它需要跨平台,跨语言
...... --------------------编程问答-------------------- 我以前用corba做通讯,都是可以用STL的啊 。。。那么我该怎么传递一个下标不定的动态数组呢。。。 --------------------编程问答-------------------- 转成字节流等简单类型,也不麻烦的,免生枝节。
补充:.NET技术 , VC.NET