[求助]帮我看下vc6使用mssoap3.0调用c#的webservice,string参数中只要传入乱码在EndMessage时就出错。
hr = soapConn.CreateInstance(__uuidof(HttpConnector30));
if(FAILED(hr))
return -3;
soapConn->Property["EndPointURL"] = m_wsURL.c_str();
hr = soapConn->Connect();
soapConn->Property["SoapAction"] = (m_wsNameSpace + m_wsMethod).c_str();
hr = soapConn->BeginMessage();
hr = soapSerializer.CreateInstance(__uuidof(SoapSerializer30));
if(FAILED(hr))
return -4;
soapSerializer->Init(_variant_t((IUnknown*)soapConn->InputStream));
soapSerializer->StartEnvelope("soap", "http://schemas.xmlsoap.org/soap/envelope/", "");
soapSerializer->StartBody(L"");
soapSerializer->StartElement(m_wsMethod.c_str(), m_wsNameSpace.c_str(), "NONE", "");
BSTR wsStr(NULL);
soapSerializer->StartElement(paramName.c_str(), m_wsNameSpace.c_str(), "", "");
wsStr = ConvertStringToBSTR1("???????");<<<<<----参数如果是???????EndMessage时就出错。否则如果是可见字符就正常。
//wsStr = ConvertStringToBSTR1("123456");<<<<<---正常。
SoapSerializer->WriteString(wsStr);
soapSerializer->EndElement();
/*****************************************************/
soapSerializer->EndElement();
soapSerializer->EndBody();
hr = soapSerializer->EndEnvelope();
if(FAILED(hr))
return -5;
soapConn->EndMessage(); //参数中有非法字符时抛出_com_error,