Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: Ann: Alternative SOAP engine, BesaSoap



Permlink Replies: 4 - Last Post: Sep 8, 2014 10:25 AM Last Post By: Besa Software
Besa Software

Posts: 4
Registered: 9/16/14
Ann: Alternative SOAP engine, BesaSoap
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 7, 2014 3:38 AM
BesaSoap is solution for creating a webservice client for Delphi. BesaSoap includes a wizard to generate interfaces that conform to a WSDL description of web services. The generated source code is simple and clean.

You can use nullable data types ( NullableString, NullableInteger, NullableDateTime...).

BesaSoap is written using new features of the Delphi language. Its running C# or Java like with custom attributes [XMLElementAttribute], [XMLArrayAttribute]...
BesaSoap uses Interfaces as the basis for the SOAP services it provides.

BesaSoap is running Delphi XE2 and Up.

Visit Web Site: http://www.besasoftware.com

Sample code for : http://www.predic8.com:8080/crm/CustomerService?wsdl

// ************************************************************************ //
// Generated with BesaSoap WSDL Importer
// Date Time :07.09.2014 10:40:19
// Importer Version  : 1.01.112
// ************************************************************************ //
unit CustomerService;
 
interface
uses 
  Besa.bsSOAPClient, Besa.bsNullable, Besa.bsAttribute;
 
type
  CustomerType = class;
  PersonType = class;
  MoneyType = class;
  CompanyAddressType = class;
  AddressType = class;
  [XmlElementAttribute('customer')]  GetAllResponseType = array of CustomerType;
 
 
  AddressType = class
    street: String;
    city: String;
    zipCode: String;
    country: String;
  end;
 
  CompanyAddressType = class(AddressType)
    companyName: String;
  end;
 
  CustomerType = class
    person: PersonType;
    address: CompanyAddressType;
    id: String;
    destructor Destroy; override;
  end;
 
  PersonType = class
    id: String;
    firstName: String;
    lastName: String;
    address: AddressType;
    age: integer;
    destructor Destroy; override;
  end;
 
  MoneyType = class
    amount: Extended;
    currency: String;
  end;
 
  // ************************************************************************ //
  // Namespace : http://predic8.com/wsdl/crm/CRMService/1/
  // transport : http://schemas.xmlsoap.org/soap/http
  // style     : document
  // binding   : CRMServicePTBinding
  // service   : CustomerService
  // port      : CRMServicePTPort
  // URL       : http://www.predic8.com:8080/crm/CustomerService
  // ************************************************************************ //
  CRMServicePTPort= interface(IInvokable) 
  ['{98B65220-35D1-45B8-AA88-528575B661EA}']
    procedure create(customer: CustomerType); stdcall;
    function get(id: String): CustomerType; stdcall;
    function getAll: GetAllResponseType; stdcall;
  end;
 
  function GetCRMServicePTPort(Addr: string; BSSERVICE: TbsService): CRMServicePTPort;
 
implementation
 
function GetCRMServicePTPort(Addr: string; BSSERVICE: TbsService): CRMServicePTPort;
const
  defURL  = 'http://www.predic8.com:8080/crm/CustomerService';
  defSvc  = 'CustomerService';
  defPrt  = 'CRMServicePTPort';
  defNS   = 'http://predic8.com/wsdl/crm/CRMService/1/';
var
  Service : TbsService;
begin
  Result := nil;
  if (Addr = '') then Addr := defURL;
  if BSSERVICE = nil then begin 
    Service:= TbsService.Create(nil);
  end else
    Service := BSSERVICE;
  try
    Service.URL:= defURL;
    Service.NamespaceURI:= defNS;
    Service.SoapAction.Values['%OperationName%']:='%OperationName%_action';
    Service.ServiceTypeInfo:= TypeInfo(CRMServicePTPort);
    Result := (Service as CRMServicePTPort);
  finally
  end;
end;
 
destructor CustomerType.Destroy; 
begin
  person.Free;
  address.Free;
  inherited;
end;
 
destructor PersonType.Destroy; 
begin
  address.Free;
  inherited;
end;
 
end.
Ilya S

Posts: 21
Registered: 1/8/10
Re: Ann: Alternative SOAP engine, BesaSoap
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 8, 2014 1:21 AM   in response to: Besa Software in response to: Besa Software
Besa Software wrote:
BesaSoap is solution for creating a webservice client for Delphi. BesaSoap includes a wizard to generate interfaces that conform to a WSDL description of web services.

Is it client only solution?
Is it interoperable with JAVA and .NET WCF web services?
Does it implement:
XMLDSIG http://www.w3.org/TR/2002/REC-xmldsig-core-20020212
XAdES http://www.w3.org/TR/XAdES
OASIS Standard 200401 http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
X.509 Certificate Token Profile http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0.pdf
Besa Software

Posts: 4
Registered: 9/16/14
Re: Ann: Alternative SOAP engine, BesaSoap
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 8, 2014 10:23 AM   in response to: Ilya S in response to: Ilya S
Ilya Surnov wrote:
Besa Software wrote:
BesaSoap is solution for creating a webservice client for Delphi. BesaSoap includes a wizard to generate interfaces that conform to a WSDL description of web services.

Is it client only solution?
Is it interoperable with JAVA and .NET WCF web services?
Does it implement:
XMLDSIG http://www.w3.org/TR/2002/REC-xmldsig-core-20020212
XAdES http://www.w3.org/TR/XAdES
OASIS Standard 200401 http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
X.509 Certificate Token Profile http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0.pdf

Yes, client only solution.
Supports for now unsigned security tokens.
Christophe LACH

Posts: 37
Registered: 12/2/01
Re: Ann: Alternative SOAP engine, BesaSoap
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 8, 2014 1:44 AM   in response to: Besa Software in response to: Besa Software
Besa Software wrote:
BesaSoap is solution for creating a webservice client for Delphi. BesaSoap includes a wizard to generate interfaces that conform to a WSDL description of web services. The generated source code is simple and clean.

{code}

Does it support XOP/MTOM for file updload / download ?

This was the biggest showstopper for current delphi SOAP components (but not the only one).
Besa Software

Posts: 4
Registered: 9/16/14
Re: Ann: Alternative SOAP engine, BesaSoap
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 8, 2014 10:25 AM   in response to: Christophe LACH in response to: Christophe LACH
Christophe LACH wrote:
Besa Software wrote:
BesaSoap is solution for creating a webservice client for Delphi. BesaSoap includes a wizard to generate interfaces that conform to a WSDL description of web services. The generated source code is simple and clean.

{code}

Does it support XOP/MTOM for file updload / download ?

This was the biggest showstopper for current delphi SOAP components (but not the only one).

Does not support XOP/MTOM.
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02