2013-07-25 7 views
0

Я не могу заставить свое приложение-сервер правильно получать что-либо.Данные JSON, отправленные с TIdHTTP.Post не получены

Отправитель Код с использованием времени разработки компонента TIdHTTP, со свойством
Request.Accept = текст/html, */*

procedure TFrmTTWebserviceTester.Button1Click(Sender: TObject); 
var 
    lJSO : ISuperObject; 
    lRequest: TStringStream; 
    lResponse: String; 
begin 
    lJSO := SO('{"name": "Henri Gourvest", "vip": true, "telephones": ["000000000", "111111111111"], "age": 33, "size": 1.83, "adresses": [ { "adress": "blabla", "city": "Metz", "pc": 57000 }, { "adress": "blabla", "city": "Nantes", "pc": 44000 } ]}'); 
    lRequest := TStringStream.Create(lJSO.AsString,TEncoding.UTF8); // or ASCII 
// showmessage(lRequest.DataString); Correct data 
    IdHTTP.Request.ContentType := 'application/json'; 
// idHTTP.Request.Charset := 'utf-8'; 
    lResponse := IdHTTP.Post('http://localhost:8085/ttposttest',lRequest); 
// ShowMessage(lResponse.dataString); 
    lRequest.Free; 
    lJSO := nil; 
end; 

приемник является TWebAction на TWebModule, набор для MethodType mtPost (или mtAny) с обработчиком:

procedure TWebModuleWebServices.WebModuleWebServicesTTPostTestAction(
    Sender: TObject; Request: TWebRequest; Response: TWebResponse; 
    var Handled: Boolean); 
var S: String; 
begin 
    S := Request.Query; 
    Handled := true; 
end; { WebModuleWebServicesTTPostTestAction } 

Request.Query пусто.
Все приложения VCL. Я прочитал theseSOposts и многие другие, но должно быть что-то с видом ...

ТИА, Ян

ответ

0

Свойство TWebRequest.Query возвращает строку URL запроса, который вы не посылая никаких. Вот почему он пуст. Ваши данные POST доступны только из TWebRequest.Content и TWebRequest.RawContent.

Смежные вопросы