gsoap中的数据操作支持是区分版本的,我用的gsoap 2.8.14是不支持的,但是我在gsoap 2.8.25下是支持数组作为返回值里的内容的。
.h文件定义(c#调用时可用)
//gsoap ns service name: downfile
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service namespace: http://abc.com/downfile.wsdl
//gsoap ns service location: http://192.168.2.11:8080
//gsoap ns schema namespace: urn:JobService
typedef struct DownInfo
{
char m_pBuffer[512000];
int m_nReadSize;
bool m_bEof;
}dinfo;
int ns__DownFile(char *pcFileName, int nPosition, struct DownInfo *r);
//实现函数
int ns__DownFile(struct soap*, char *file, int pos, struct DownInfo *r)
{
ifstream file;
file.open(file, std::ios::in | std::ios::binary);
if(file.is_open())
{
file.seekg(pos);
file.read(r->m_pBuffer, sizeof(r->m_pBuffer));
r->m_nReadSize = file.gcount();
r->m_bEof = file.eof();
file.close();
};
return 0;
}