1、导入的Service.cpp
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : http://localhost:1043/Web/Service.asmx?wsdl
//  >Import : http://localhost:1043/Web/Service.asmx?wsdl:0
// Encoding : utf-8
// Version  : 1.0
// (2008-2-19 21:50:12 - - $Rev: 7010 $)
// ************************************************************************ //

#include <vcl.h>
#pragma hdrstop

#if !defined(ServiceH)
#include "Service.h"
#endif

namespace NS_Service {

_di_ServiceSoap GetServiceSoap(bool useWSDL, AnsiString addr, THTTPRIO* HTTPRIO)
{
  static const char* defWSDL= "http://localhost:1043/Web/Service.asmx?wsdl";
  static const char* defURL = "http://localhost:1043/Web/Service.asmx";
  static const char* defSvc = "Service";
  static const char* defPrt = "ServiceSoap";
  if (addr=="http://www.blog.com.cn/")
    addr = useWSDL ? defWSDL : defURL;
  THTTPRIO* rio = HTTPRIO ? HTTPRIO : new THTTPRIO(0);
  if (useWSDL) {
    rio->WSDLLocation = addr;
    rio->Service = defSvc;
    rio->Port = defPrt;
  } else {
    rio->URL = addr;
  }
  _di_ServiceSoap service;
  rio->QueryInterface(service);
  if (!service && !HTTPRIO)
    delete rio;
  return service;
}

// ************************************************************************ //
// This routine registers the interfaces and types exposed by the WebService.
// ************************************************************************ //
static void RegTypes()
{
  /* ServiceSoap */
  InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
  InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
  InvRegistry()->RegisterInvokeOptions(__interfaceTypeinfo(ServiceSoap), ioDocument);
}
#pragma startup RegTypes 32

};     // NS_Service

===================================================
2、Service.h
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : http://localhost:1043/Web/Service.asmx?wsdl
//  >Import : http://localhost:1043/Web/Service.asmx?wsdl:0
// Encoding : utf-8
// Version  : 1.0
// (2008-2-19 21:50:12 - - $Rev: 7010 $)
// ************************************************************************ //

#ifndef   ServiceH
#define   ServiceH

#include <System.hpp>
#include <InvokeRegistry.hpp>
#include <XSBuiltIns.hpp>
#include <SOAPHTTPClient.hpp>

#if !defined(SOAP_REMOTABLE_CLASS)
#define SOAP_REMOTABLE_CLASS __declspec(delphiclass)
#endif
#if !defined(IS_OPTN)
#define IS_OPTN 0x0001
#endif

namespace NS_Service {

// ************************************************************************ //
// The following types, referred to in the WSDL document are not being represented
// in this file. They are either aliases[@] of other types represented or were referred
// to but never[!] declared in the document. The types from the latter category
// typically map to predefined/known XML or Borland types; however, they could also
// indicate incorrect WSDL documents that failed to declare or import a schema type.
// ************************************************************************ //
// !:string          - "http://www.w3.org/2001/XMLSchema"

// ************************************************************************ //
// Namespace : http://tempuri.org/
// soapAction: http://tempuri.org/%operationName%
// transport : http://schemas.xmlsoap.org/soap/http
// style     : document
// binding   : ServiceSoap
// service   : Service
// port      : ServiceSoap
// URL       : http://localhost:1043/Web/Service.asmx
// ************************************************************************ //
__interface INTERFACE_UUID("{77573149-9C57-FA51-F11F-EFD527C91BD9}") ServiceSoap : public IInvokable
{
public:
  virtual WideString      Test() = 0;
  virtual WideString      Test2(const WideString s) = 0;
};
typedef DelphiInterface<ServiceSoap> _di_ServiceSoap;

_di_ServiceSoap GetServiceSoap(bool useWSDL=false, AnsiString addr="", THTTPRIO* HTTPRIO=0);

};     // NS_Service

#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using  namespace NS_Service;
#endif

#endif // ServiceH
===========================================================
3、调用代码
NS_Service::_di_ServiceSoap p = NS_Service::GetServiceSoap(true, "", NULL);
    WideString s = "ok";
WideString str = p->Test2(s);
p->Test();
MessageBoxW(NULL, str.c_bstr(), NULL, MB_OK);

posted on 2008-11-13 16:48  袁晓平  阅读(1533)  评论(0编辑  收藏  举报