Здравствуйте, столкнулся с проблемой.
Отправляю XML файл с помощью Indy 10 методом Post
Код:
Function PostFile(url:string;filename:string):string;
var data: TIdMultiPartFormDataStream;
GetResult:TStringStream;
PostXML: TIdHTTPAccess;
begin
PostXML:=TIdHTTPAccess.Create(nil);
PostXML.Request.ContentEncoding := 'utf-8';
PostXML.Request.ContentType := 'text/xml';
data:=TIdMultiPartFormDataStream.Create;
GetResult:=TStringStream.Create('');
try
data.AddFile('xml_file',filename, 'text/xml');
try
PostXML.Post(url,data,GetResult);
result:=UTF8Decode(GetResult.DataString);
Except
on E: Exception do
begin
result:=result+E.Message;
end;
end;
finally
data.Free;
PostXML.Free;
end;
end;
XML файл бывает не соответствует схеме XSD, мне нужно узнать в Responce (результате отправки), какова причина не соответствия, где именно ошибка в XML файле. Через Curl выдает при отправке корректно.
Код HTML:
<A><error>org.xml.sax.SAXParseException; cvc-pattern-valid: Value '' is not facet-valid with respect to pattern '(\d{10}|\d{12})' for type 'INNType'.</error><ver>2</ver></A>
А через Indy всегда выдает HTTP/1.1 500 Server Error.
Как можно это сделать? Про отдельную валидацию XML по схеме и структуре знаю, у меня это осуществляется, меня конкретно интересует получение правильного ответа от сервера.