Unofficial SOAP Bug Fixes
By Bruneau Babet bbabet@nospam.borland.com
Remove the nospam. from email address when mailing me
In general, applying these fixes require you to rebuild some of the VCL. The easiest way to do this, is to go to Tools | Environment Options and from the Library tab add $(DELPHI)\Source\Internet;$(DELPHI)\Source\SOAP to your Library Path.
These fixes are unofficial, are not supported by Borland, and are to be used at your own risk.
Quick Jumps:
The case of serialized Boolean members of a complex type is incorrect (i.e. 'True'/'False' instead of 'true'/'false') |
Description: When serializing Boolean members of a TRemotable-descendant class, the value of the latter are sent as 'True' or 'False'. Some SOAP implementations, including Delphi's, will accept these values. However, many will complain, and for good reason, since the legal literal representations of a boolean are '1', '0', 'true' or 'false'. Fix: |
function TSOAPDomConv.GetObjectPropAsText(Instance: TObject; PropInfo: PPropInfo): WideString; var I: LongInt; E: Extended; I64: Int64; begin case (PropInfo.PropType)^.Kind of tkInteger: begin I := GetOrdProp(Instance, PropInfo); Result := IntToStr(I); end; tkFloat: begin E := GetFloatProp(Instance, PropInfo); Result := FloatToStrEx(E); end; tkWString: Result := GetWideStrProp(Instance, PropInfo); tkString, tkLString: Result := GetStrProp(Instance, PropInfo); tkInt64: begin I64 := GetInt64Prop(Instance, PropInfo); Result := IntToStr(I64); end; tkEnumeration: |
Memory leak in Servers that expose WideString parameters |
Description: Delphi SOAP fails to delete WideStrings allocated by the framework on behalf of Servers that expose WideString parameters. Fix: |
type {...} TDataContext = class protected FObjsToDestroy: array of TObject; DataOffset: Integer; Data: array of Byte; DataP: array of Pointer; VarToClear: array of Pointer; DynArrayToClear: array of TDynToClear; StrToClear: array of Pointer; |
Error publishing WebService's WSDL when MSXML4 is installed |
Description: As of SP#2, Delphi's msxmldom unit will attempt to use MSXMLDOM v4.0 if the latter is present. However, this may cause the creation and Publishing of a WSDL document by a Delphi WebService to fail. The typical symptom of this failure is that the client requesting the WSDL gets back an HTML document instead; and the document contains the following error message: Error: This name may not contain the ':' character Fix: |
function TXMLNode.FindNamespaceDecl(const NamespaceURI: DOMString): IXMLNode; var I: Integer; |
Links:
Last Modified: 15-MAR-02