Я создал сервер Delphi SOAP с берлинской версией Delphi.На данный момент все, что делает мой сервис - это возвращает содержимое файла.Клиент ожидает, что данные будут UTF-8.
Мой коллега (то есть клиент) указывает, что они получают это сообщение, когда пытаются использовать мой ответ:
Тип содержимого text / xml;charset = us-ascii ответного сообщения не соответствует типу содержимого привязки (text / xml; charset = utf-8).При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно.
К сожалению, они не могут больше мне это сказать.Я надеялся, что они смогут точно проверить, что не так с моими данными, но, очевидно, это даже не доходит до их логики в рамках MS.
Текстовый файл, который я возвращаю, сохраняется как данные UTF-8.Должен ли мой код ниже быть достаточно?Или нужно установить какой-нибудь флаг кодировки?
procedure OpenAndReset( fileName : String ; var f : TextFile );
begin
try
if not fileExists( fileName ) then
FileClose( FileCreate ( fileName ) );
AssignFile( f , fileName );
FileMode := fmOpenRead;
Reset( f );
except
on E: Exception do begin
E.Message := 'File Name = ' + FileName + #13#10 + E.Message;
Raise;
end;
end;
end;
function fileToString( filename : String ): String;
var txtFile: TextFile;
s : String;
begin
try
OpenAndReset( fileName , txtFile );
s := '';
result := '';
readLn( txtFile , s );
while not Eof( txtFIle ) do begin
result := result + s;
readLn( txtFile , s );
end;
if s <> '' then
result := result + s;
finally
System.Close( TxtFile );
end;
end;
function TRedNMXPurvisService.SetIncidentEvent(const Value: String): String; stdcall;
begin
Result := filetostring(ExtractFileDir(ParamStr(0))+'\sampleutf8encoded.xml');
end;