Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Пересылка UTF-8 запроса с использованием TidHTTP   Найти похожие ветки 

 
olegl ©   (2005-09-01 12:27) [0]

Нужно переслать запрос UTF-8 из клиентского приложения с использованием TidHTTP. Получение данных запроса происходит нормально, а вот при отсылке сервер интерпретирует символы выше таблицы ASCII как некорректные. Подозреваю что функция UTF8Encode преобразует данные в непонятный для сервера формат или INDY не правельно пересылает данные. Сервер - Java-сервлет, TOMCAT/Apache. Перед самой отсылкой запроса пробовал данные скидывать в файл, все OK.

Код:

procedure TSocketThread.Initialize(ConnectionType: TConnectionType; Login,
 Password, Host: string; Port: integer);
begin
 FResponseReady:=false;
 FConnectionType:=ConnectionType;
 FHTTP.Request.Username:=Login;
 FHTTP.Request.Password:=Password;
 FHTTP.Request.Host:=Host;
 FHTTP.Host:=Host;
 FHTTP.Port:=Port;
 FHTTP.Request.ContentType:= "application/x-www-form-urlencoded;text/xml; charset=utf-8;";
//FHTTP.Request.ContentType:= "text/xml; charset=UTF-8;";
 FHTTP.Request.BasicAuthentication:=true;
 FInitialized:=true;
end;

procedure TSocketThread.Execute;
var
 sOut,sInp: TMemoryStream;
 Request: WideString;
 sStr:TtntStringList;
 ANSIResponse,ANSIRequest:string;
const
 jndiName = "lv/gcpartners/psi/webmodule/EntryPoint";
begin
 SetName;
   FWorking:=true;
   sInp:=TMemoryStream.Create;
   sOut:=TMemoryStream.Create;
   Request:=("jndiname="+jndiName+"&xmlmessage="+FRequest);
   ANSIRequest:=UTF8Encode(Request);
   sInp.Write((@ANSIRequest[1])^,length(ANSIRequest)); // Проблема тут !!!
   try
     try
       if sHost="" then
         raise Exception.Create("sHost field empty in TSocketThread.Execute");
       if FRequest="" then
         raise Exception.Create("Request field empty in TSocketThread.Execute");
       if FHTTP.Host="" then
         raise Exception.Create("TSocketThread not initialized in TSocketThread.Execute");
       if not assigned(FHTTP) then
         raise Exception.Create("TidHTTP not created in TSocketThread.Execute");
       FHTTP.Post("http://"+FHTTP.Request.Host+sHost, sInp, sOut);  // или тут... наверно :)
       FResponse.ResponseResult:=rrOk;
     except
       on E: Exception do
       begin
         FResponse.ErrorStr:=e.Message;
         FResponse.ResponseResult:=rrError;
       end;
     end;
   finally
     if FHTTP.ResponseCode=200 then
       FResponse.ResponseResult:=rrOk
     else if FHTTP.ResponseCode=401 then
     begin
       FResponse.ResponseResult:=rrError;
       FResponse.ErrorStr:="Bad login information." +#13#10+"Please re-type Username and Password carefully.";
     end
     else FResponse.ResponseResult:=rrError;
       sOut.Seek(0,soFromBeginning);
       SetLength(ANSIResponse,sOut.Size);
       sOut.Read((@ANSIResponse[1])^,sOut.Size);
       FResponse.XMLResponse:=UTF8Decode(ANSIResponse);
       FHTTP.Free;
       SInp.Free;
       sOut.Free;
       FRequest:="";
       FResponseReady:=true;
       FWorking:=false;
   end;
end;


 
olegl ©   (2005-09-01 12:33) [1]

Наверно стоит дополнить что если запрос не содержит нелатнских символов то все OK



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 3.922 c
1-1131612051
iamkate
2005-11-10 11:40
2005.12.11
Сжатие файлов


4-1128284071
XeON
2005-10-03 00:14
2005.12.11
CD эмулятор


2-1132935900
crazycrazymax
2005-11-25 19:25
2005.12.11
В консоли кириллица выводится криво, как это лечить?


8-1121037044
Yura32
2005-07-11 03:10
2005.12.11
OpenGL


2-1132721989
KGC
2005-11-23 07:59
2005.12.11
В чём фишка ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский