Einzelnen Beitrag anzeigen

dh-clfs

Registriert seit: 6. Mai 2005
Ort: Germany-Berlin
5 Beiträge
 
Delphi XE Enterprise
 
#3

Re: Indy10 IdHTTP und WebClient

  Alt 6. Mai 2010, 17:59
Danke für die schnelle Antwort.

Der WebService ist über WSDL importiert worden und die Unit von WebService ist eingebunden.

Delphi-Quellcode:
unit webservice;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

const
  IS_OPTN = $0001;
  IS_REF = $0080;


type

  // ************************************************************************ //
  // Die folgenden Typen, auf die im WSDL-Dokument Bezug genommen wird, sind in dieser Datei
  // nicht repräsentiert. Sie sind entweder Aliase(@) anderer repräsentierter Typen oder auf sie wurde Bezug genommen,
  // aber in diesem Dokument nicht deklariert (!). Die Typen aus letzterer Kategorie
  // sind normalerweise mit vordefinierten/bekannten XML- oder Borland-Typen verbunden; sie könnten aber auch ein Anzeichen
  // für ein falsches WSDL-Dokument sein, das einen Schema-Typ nicht deklariert oder importiert.. // ************************************************************************ //
  // !:string - "http://www.w3.org/2001/XMLSchema"[Gbl]
  // !:int - "http://www.w3.org/2001/XMLSchema"[Gbl]



  // ************************************************************************ //
  // Namespace : [url]http://www.x.net/[/url]
  // soapAction: [url]http://www.x.net/%operationName%[/url]
  // Transport : [url]http://schemas.xmlsoap.org/soap/http[/url]
  // Stil : document
  // Bindung : WebService_x0020_for_x0020_Updating_x0020_Soap
  // Service : WebService_x0020_for_x0020_Updating_x0020_
  // Port : WebService_x0020_for_x0020_Updating_x0020_Soap
  // URL : [url]http://x/webservice.asmx[/url]
  // ************************************************************************ //
  WebService_x0020_for_x0020_Updating_x0020_Soap = interface(IInvokable)
  ['{BE7B6088-D764-E211-4739-7232AB55E793}']
    function CleanUp: WideString; stdcall;
    function SQLAddMain(const Param1: Integer; const Param2: WideString; const Param3: WideString; const Param4: WideString; const param5: WideString; const Param6: WideString;
                         const Param7: WideString; const Param8: WideString; const Param9: WideString; const ParamA: WideString; const ParamB: WideString;
                         const ParamC: Integer; const ParamD: Integer): WideString; stdcall;
    function SQLAddContent(const Param1: Integer; const Param2: Integer; const Param3: WideString; const Param4: WideString; const Param5: WideString): WideString; stdcall;
    function SQLAddRelations(const Param1: Integer; const Param2: Integer; const Param3: Integer): WideString; stdcall;
  end;

function GetWebService_x0020_for_x0020_Updating_x0020_Soap(UseWSDL: Boolean=System.False; Addr: string='http://x/WebService.asmx'; HTTPRIO: THTTPRIO = nil): WebService_x0020_for_x0020_Updating_x0020_Soap;


implementation
  uses SysUtils;

function GetWebService_x0020_for_x0020_Updating_x0020_Soap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): WebService_x0020_for_x0020_Updating_x0020_Soap;
const
  defWSDL = 'C:\webservice.xml';
  defURL = 'http://x/webservice.asmx';
  defSvc = 'WebService_x0020_for_x0020_Updating_x0020_';
  defPrt = 'WebService_x0020_for_x0020_Updating_x0020_Soap';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(NIL)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as WebService_x0020_for_x0020_Updating_x0020_Soap);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;


initialization
  InvRegistry.RegisterInterface(TypeInfo(WebService_x0020_for_x0020_Updating_x0020_Soap), 'http://www.x.net/', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WebService_x0020_for_x0020_Updating_x0020_Soap), 'http://www.x.net/%operationName%');
  InvRegistry.RegisterInvokeOptions(TypeInfo(WebService_x0020_for_x0020_Updating_x0020_Soap), ioDocument);

end.
Ich habe schon versucht über THTTPRIO an TidHTTP anzuknüpfen, bzw. vorweg die gleichen Aktionen durchzuführen wie mit TIdHTTP um mich an der Website anzumelden. Bin dort aber nicht wirklich weitergekommen weil die entsprechenden Eigenschaften und Methoden fehlen bze. ich diese nicht ersehe.
Frank Schmidt
  Mit Zitat antworten Zitat