WebService が利用可能かどうか、または有効な URL があるかどうかを確認するにはどうすればよいですか?
Delphi ウィザードを使用して、必要な WSDL 関数をインポートおよび自動生成しています。
ウィザードが作成した関数は例外をスローせず、WSDL または URL が間違っていても null オブジェクトを返しません。返された WSDL クラスの関数を呼び出したときにのみ、XML-String に有効な「text/html」スタイルがないという奇妙な例外がスローされます。
自動生成された WSDL 関数は次のとおりです。
function GetcheckVatPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): checkVatPortType;
const
defWSDL = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
defURL = 'http://ec.europa.eu/taxation_customs/vies/services/checkVatService';
defSvc = 'checkVatService';
defPrt = 'checkVatPort';
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 checkVatPortType);
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;
// ************************************************************************ //
// Namespace : urn:ec.europa.eu:taxud:vies:services:checkVat
// Transport : http://schemas.xmlsoap.org/soap/http
// Stil : document
// Verwenden von : literal
// Bindung : checkVatBinding
// Service : checkVatService
// Port : checkVatPort
// URL : http://ec.europa.eu/taxation_customs/vies/services/checkVatService
// ************************************************************************ //
checkVatPortType = interface(IInvokable)
['{0F901373-2432-32E2-C99D-95B53AE83C79}']
// Entpacken nicht möglich:
// - Mehrere strenge out-Elemente gefunden
function checkVat(const parameters: checkVat): checkVatResponse; stdcall;
// Entpacken nicht möglich:
// - Mehrere strenge out-Elemente gefunden
function checkVatApprox(const parameters: checkVatApprox): checkVatApproxResponse; stdcall;
end;
defWSDL
orが無効または利用できない場合、初期化されたクラス/インターフェイスdefURL
を返します。checkVatPortType
その後、返されたインターフェイスで関数 ( ) を呼び出すとcheckVatPortType.checkVat
、奇妙な例外が発生します。
つまり、WebService が利用できない場合、ユーザーは「XML-String に有効な "text/html" 形式がありません」というメッセージを受け取ります。これは問題を説明していません。