请问在VC6.0下调用.Net写的WebService需要客户端下载.Net FrameWork吗?
请给出最简单的例子好吗?
假设webservice是这样写的
[webmethod]
string get()
{
   return "123";
}
请问在vc6.0中是如何调用的?
谢谢

解决方案 »

  1.   

    不需要,客户端要装soap toolkit,照着写在stdafx.h加上
    //WEB_SERVICE
    #import "msxml3.dll" 
    using namespace MSXML2; 
    #import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" exclude("IStream", "ISequentialStream", "_LARGE_INTEGER","_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME") 
    using namespace MSSOAPLib; 
    //ENDSoapTestDlg.h里面
    CString BeginSoap(CString,CString,CString);
    ISoapConnectorPtr SoapConnector;
    ISoapSerializerPtr Serializer;
    ISoapReaderPtr Reader;SoapTestDlg.cpp里面
    void CSoapTestDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    CString str,strWord;
    GetDlgItem(IDC_EDIT1)->GetWindowText(strWord);
    str=BeginSoap("EnglishTOChinese",strWord,"http://www.webservicex.net/translateservice.asmx");
    AfxMessageBox(str);
    }CString CSoapTestDlg::BeginSoap(CString UserName,CString Password,CString WebUrl)
    {
    HRESULT hr;

    //创建SoapConnector类的对象
    SoapConnector.CreateInstance(__uuidof(HttpConnector)); 

    //指定Web服务的地址
    SoapConnector->Property ["EndPointURL"] =(LPSTR)(LPCTSTR)WebUrl;

    //与Web服务连接
    hr=SoapConnector->Connect();
    if(FAILED(hr)) return "";

    //指定Web服务完成的操作
    SoapConnector->Property ["SoapAction"] = _T("http://www.webservicex.net/Translate");

    //准备发送消息给Web服务
    SoapConnector->BeginMessage();

    // 创建SoapSerializer对象
    Serializer.CreateInstance(__uuidof(SoapSerializer)); 

    // 将serializer连接到connector的输入字符串
    Serializer->Init(_variant_t((IUnknown*)SoapConnector->InputStream)); 

    // 创建SOAP消息
        Serializer->startEnvelope("soap","","");
    Serializer->startBody("");  Serializer->startElement("Translate","http://www.webservicex.net","","soap");

    Serializer->startElement("LanguageMode","","","soap"); 
    Serializer->writeString((_bstr_t)(LPCTSTR)UserName);
    Serializer->endElement();

    Serializer->startElement("Text","","","soap"); 
    Serializer->writeString((_bstr_t)(LPCTSTR)Password);
    Serializer->endElement(); Serializer->endElement(); Serializer->endBody(); 
        Serializer->endEnvelope();   

    //消息真正地发给Web服务
    hr=SoapConnector->EndMessage(); 
    if(FAILED(hr)) return "";

    // 读取响应
    Reader.CreateInstance(__uuidof(SoapReader)); 

    // 将reader联接到connector的输出字符串
    Reader->Load(_variant_t((IUnknown*)SoapConnector->OutputStream), _T("")); 

    return CString((const char *)Reader->RPCResult->text);
    }