vc2008连接WebService出现异常,希望得到大家帮助,谢谢
大家好,我想通过VC2008调用WebService来获取天气预报数据,但是有一部分代码在VC6.0下是正常的,在VC2008下出现异常,希望各位大牛能帮助我,谢谢。代码如下(其中注释掉的部分出现异常情况):
void CWeatherData::GetWeatherbyCityName(char * CharStr)
{
CoInitialize(NULL);
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
// Connect to the service
if (FAILED(Connector.CreateInstance(__uuidof(HttpConnector30)))) // 创建对象
{
MessageBox(NULL,_T("创建失败"),_T("系统提示"),MB_OK);
}
Connector->Property["EndPointURL"] = (LPCTSTR)m_csWebUrl; // wsdl路径
Connector->Connect();
// Begin the message // 消息体
Connector->Property["SoapAction"] = (LPCTSTR)_T("http://WebXml.com.cn/getWeatherbyCityName"); // 函数体参数
Connector->BeginMessage();
Serializer.CreateInstance(__uuidof(SoapSerializer30));
Serializer->Init(_variant_t((IUnknown *)Connector->InputStream));
// Bulid the SOAP Message
Serializer->StartEnvelope("Soap","","");
Serializer->StartBody("");
Serializer->StartElement("getWeatherbyCityName","http://WebXml.com.cn/","","Soap"); // 函数处理
Serializer->StartElement("theCityname","","","Soap");
Serializer->WriteString((LPCTSTR)CharStr); // 参数处理
Serializer->EndElement();
Serializer->EndBody();
MessageBox(NULL,_T("测试开始"),_T("系统提示"),MB_OK);
//Serializer->EndEnvelope();
MessageBox(NULL,_T("测试结束"),_T("系统提示"),MB_OK);
//Connector->EndMessage();
//**********************
Reader.CreateInstance(__uuidof(SoapReader30));
//Reader->Load(_variant_t((IUnknown*)Connector->OutputStream),_T("")); // 加载返回数据
// 获取数据
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
//HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
//pDoc->loadXML(Reader->GetRpcResult()->xml);
//char * Temp;
/*
for (int i=0; i<pDoc->childNodes->Getitem(0)->childNodes->Getlength();i++)
{
//Temp = (char *)pDoc->childNodes->Getitem(0)->childNodes->Getitem(i)->Gettext();
// CString csTest;
//USES_CONVERSION;
//csTest = A2W(Temp);
// MessageBox(NULL,csTest,_T("系统提示"),MB_OK);
//strcpy(strarray[i],Temp);
}
*/
}
[解决办法]
http://blog.csdn.net/sha_jinhao/article/details/8589618