Bom dia.
Você pode fazer no delphi o envelope xml/soap manualmente e enviar sem usar o wsdl.
function InserirEspecificacao(_VtexId:integer; _FieldName: string; _Value:string):boolean;
var
IdHTTP1 : TIdHTTP;
postData : TMemoryStream;
myFile : TextFile;
text : string;
begin
text := '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">'+
'<soapenv:Header/>'+
'<soapenv:Body>'+
'<tem:ProductEspecificationInsert>'+
'<tem:idProduct>'+IntToStr(_VtexId)+'</tem:idProduct>'+
'<tem:fieldName>'+_FieldName+'</tem:fieldName>'+
'<tem:fieldValues>'+
'<arr:string>'+_Value+'</arr:string>'+
'</tem:fieldValues>'+
'</tem:ProductEspecificationInsert>'+
'</soapenv:Body>'+
'</soapenv:Envelope>';
try
AssignFile(myFile, GetCurrentDir +'\Especification.XML');
ReWrite(myFile);
WriteLn(myFile, text);
finally
CloseFile(myFile);
end;
if not FileExists(GetCurrentDir + '\Especification.XML') then
begin
Result:= False;
Exit;
end;
// faz o envio do envelope xml/soap para o webservice
IdHTTP1 := TIdHTTP.Create(nil);
postData := TMemoryStream.Create;
try
mTemp.Lines.Clear;
postData.Position := 0;
postData.LoadFromFile(GetCurrentDir + '\Especification.XML');
IdHTTP1.Request.ContentType := 'text/xml';
IdHTTP1.Request.Charset := 'utf-8';
IdHTTP1.Request.ContentLength := postData.Size;
IdHTTP1.Request.CustomHeaders.Values['SOAPAction'] := 'http://tempuri.org/IService/ProductEspecificationInsert';
IdHTTP1.ProtocolVersion := pv1_1;
IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions + [hoKeepOrigProtocol];
IdHTTP1.Request.BasicAuthentication := False;
IdHTTP1.Request.Authentication := TIdBasicAuthentication.Create;
IdHTTP1.Request.Authentication.Username:= 'usuario vtex';
IdHTTP1.Request.Authentication.Password:= 'token vtex';
mTemp.Lines.Text := IdHTTP1.Post('http://webservice-teste.vtexcommerce.com.br/AdminWebService/Service.svc', postData);
if mTemp.Text <> EmptyStr
then Result:= true
else Result:= false;
except
on e: Exception do
begin
Result:= False;
MessageDlg(e.Message,mtError,[mbOK],0);
end;
end;
postData.Free;
IdHTTP1.Free;
end;