展开全部
webServices
你用PHP 写一个WS 然后用C++操作这个WS 就行了。
写数据 和 读数据
#include "StdAfx.h"
#include "WebServices.h"
#import "msxml4.dll"
using namespace MSXML2;
#include "atlenc.h"
#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP30.dll" \
exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", \
"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib30;
WebServices::WebServices(void)
{
CoInitialize(NULL);
}
WebServices::~WebServices(void)
{
CoUninitialize();
}
bool WebServices::SendData(peroson_info perInfo)
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
Connector.CreateInstance(__uuidof(HttpConnector30));
Connector->Property["EndPointURL"] = "http://192.168.0.10:8080/CVR100S/services/Hello";
Connector->Connect();
Connector->Property["SoapAction"] = "";
Connector->BeginMessage();
Serializer.CreateInstance(__uuidof(SoapSerializer30));
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
Serializer->StartEnvelope("","","");
Serializer->StartBody("");
Serializer->StartElement("SaveInfo","http://ws.chinaidcard.com","","");
Serializer->StartElement("in0","","","");
SYSTEMTIME time;
GetLocalTime(&time);
CString strTime;
strTime.Format(L"%04d-%02d-%02d %02d:%02d:%02d",time.wYear,time.wMonth,time.wDay,time.wHour,time.wMinute,time.wSecond);
CString temp=perInfo.Name+L";"+perInfo.Sex+L";"+perInfo.Nation+L";"+perInfo.Birthday+L";"+perInfo.Address+L";"+perInfo.IDCode+L";"+perInfo.发证机关+L";"+(perInfo.StartDate+L"-"+perInfo.EndDate)+L";"+perInfo.NewAddress+L";"+strTime+L";"+L"netGroup01"+L";"+L"RID2";
Serializer->WriteString(temp.AllocSysString());
Serializer->EndElement();
Serializer->StartElement("in1","","","");
CFile file;
byte *data;
int len=0;
TCHAR szPath[MAX_PATH];
GetModuleFileName( NULL, szPath, MAX_PATH );
CString path=CString(szPath);
CString laod=path.Left(path.ReverseFind('\\')+1)+L"zp.bmp";
if(file.Open( laod,CFile::modeRead))
{
file.SeekToBegin();
len=file.GetLength();
data=new byte[len];
file.Read(data,len);
file.Close();
}
CString buffer;
IDataEncoderFactoryPtr encoderFc;
encoderFc.CreateInstance(__uuidof(DataEncoderFactory30));
DWORD *len1=new DWORD;
IDataEncoderPtr encoder=encoderFc->GetDataEncoder(L"base64");
encoder->raw_SizeToEncode(data,len,len1);
int lon=*len1;
byte *data1=new byte[lon+1];
HRESULT hr=encoder->Encode(data,len,data1,len1);
int len2=*len1;
if(FAILED(hr))
{
TRACE0("123");
}
Serializer->WriteBuffer(len2,(byte *)data1);
delete len1;
delete data;
delete data1;
Serializer->EndElement();
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
Connector->EndMessage();
Reader.CreateInstance(__uuidof(SoapReader30));
Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
CString result=Reader->RpcResult->text;
if(result==L"ok")
{
return true;
}else
{
return false;
}
}
CString WebServices::GetBmp()
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
Connector.CreateInstance(__uuidof(HttpConnector30));
Connector->Property["EndPointURL"] = "http://192.168.0.10:8080/CVR100S/services/Hello";
Connector->Connect();
Connector->Property["SoapAction"] = "";
Connector->BeginMessage();
Serializer.CreateInstance(__uuidof(SoapSerializer30));
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
Serializer->StartEnvelope("","","");
Serializer->StartBody("");
Serializer->StartElement("GetBmp","http://ws.chinaidcard.com","","");
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
Connector->EndMessage();
Reader.CreateInstance(__uuidof(SoapReader30));
Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
IDataEncoderFactoryPtr encoderFc;
encoderFc.CreateInstance(__uuidof(DataEncoderFactory30));
IDataEncoderPtr encoder=encoderFc->GetDataEncoder(L"base64");
CString strdata=Reader->RpcResult->text;
int byteLen=Reader->RpcResult->text.length()*2+2;
CFile file;
DWORD *len23=new DWORD;
encoder->SizeToDecode(strdata.AllocSysString(),byteLen,len23);
int l=*len23;
byte *data12=new byte[l];
encoder->Decode(strdata.AllocSysString(),byteLen,data12,len23);
if(file.Open(L"data.bmp",CFile::modeCreate|CFile::modeReadWrite))
{
file.Write(data12,l);
file.Close();
}
delete len23,data12;
return L"";
}
或者你用
CInternet
CHttpFile
看看例子 我手头上没有62616964757a686964616fe78988e69d8331333239313532
本回答被网友采纳
已赞过
已踩过<
你对这个回答的评价是?
评论
收起