Как я могу использовать Tidhttp, чтобы сделать запрос Get с параметром под названием xml?
Я успешно использую Delphi 2010 для выполнения http-запросов на получение, но для одной службы, которая ожидает параметр с именем «xml», запрос не выполняется с ошибкой «HTTP / 1.1 400 Bad Request».
Я заметил, что вызов одного и того же сервиса и пропуск параметра xml работает.
Я пробовал следующее безуспешно:
HttpGet('http://localhost/Service/Messaging.svc/SendReports/PDF?xml=<?xml version="1.0"?><email><message><to>[email protected]</to><from>[email protected]</from></message></email>&id=42&profile=A1');
...
function TReportingFrame.HttpGet(const url: string): string;
var
responseStream : TMemoryStream;
html: string;
HTTP: TIdHTTP;
begin
try
try
responseStream := TMemoryStream.Create;
HTTP := TIdHTTP.Create(nil);
HTTP.OnWork:= HttpWork;
HTTP.Request.ContentType := 'text/xml; charset=utf-8';
HTTP.Request.ContentEncoding := 'utf-8';
HTTP.HTTPOptions := [hoForceEncodeParams];
HTTP.Request.CharSet := 'utf-8';
HTTP.Get(url, responseStream);
SetString(html, PAnsiChar(responseStream.Memory), responseStream.Size);
result := html;
except
on E: Exception do
Global.LogError(E, 'ProcessHttpRequest');
end;
finally
try
HTTP.Disconnect;
except
end;
end;
end;
Вызов того же URL с именем параметра «xml», переименованным во что-либо еще, например «xml2» или «name» с тем же значением, что и выше, также работает. Я также пробовал несколько комбинаций кодировки, но я думаю, что инди-компонент меняет ее внутренне.
РЕДАКТИРОВАТЬ
Сервис ожидает:
[WebGet(UriTemplate = "SendReports/{format=pdf}?report={reportFile}¶ms={jsonParams}&xml={xmlFile}&profile={profile}&id={id}")]
Кто-нибудь имел опыт работы с этим?
Спасибо