자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi ems서버 에서 post관련
2019.08.26 20:22
안녕하세요.
데브기어 강좌를 보고 ems 서버를 하고 있는 중입니다.
강좌를 보면 ems 서버를 만든다음 get은 했는데 post가 안되서요.
get부분을 보면
procedure THamletResource1.Get(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse);
const
SQL_LIST ='SELECT MAIL_ADDRESS,PWD,ADDRESS,SEX FROM USER_TEST';
var
Writer : TJsonObjectWriter;
begin
qryHamlet.Close;
qryHamlet.SQL.Text := SQL_LIST;
qryHamlet.Open;
Writer := TJsonObjectWriter.Create;
try
Writer.WriteStartObject; // start resource
Writer.WritePropertyName('Hamlet');
Writer.WriteStartObject; // start item
Writer.WritePropertyName('total');
Writer.WriteValue(qryHamlet.RecordCount);
Writer.WritePropertyName('Hamlet');
Writer.WriteStartArray;
qryHamlet.First;
while not qryHamlet.Eof do
begin
Writer.WriteStartObject;
Writer.WritePropertyName('MAIL_ADDRESS');
Writer.WriteValue(qryHamlet.FieldByName('MAIL_ADDRESS').AsString);
Writer.WritePropertyName('PWD');
Writer.WriteValue(qryHamlet.FieldByName('PWD').AsString);
Writer.WritePropertyName('ADDRESS');
Writer.WriteValue(qryHamlet.FieldByName('ADDRESS').AsString);
Writer.WritePropertyName('SEX');
Writer.WriteValue(qryHamlet.FieldByName('SEX').AsString);
Writer.WriteEndObject;
qryHamlet.Next;
end;
Writer.WriteEndArray;
Writer.WriteEndObject; // end item
Writer.WriteEndObject; // end resource
// Sample code
AResponse.Body.SetValue(Writer.JSON as TJSONValue, True);
except
Writer.Free;
raise;
end;
위와같이 하면 데이터가 json 형태로 잘나옵니다.
그런데 post를 하면 에러도 안되고 잘 처리 됐다고 하는데
rest debugger 에 헤더 부분에
Connection=close
Date=Mon, 26 Aug 2019 11:10:09 GMT
Content-Length=0
이렇게 나오는데 테이블을 뒤져보면 인서트가 되지 않습니다.
그리고 디버깅을 할려고 브레이크를 걸어도 그자리가 디버깅이 안됩니다.
참고로 post 부분은
procedure THamletResource1.Post(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse);
const
SQL_ITEM_INSERT = 'INSERT INTO USER_TEST( MAIL_ADDRESS,PWD) '+' values (:mail_address,:pwd ) ';
var
mail_address,pwd : String;
Json : TJSONValue;
begin
Json := ARequest.Body.GetValue;
mail_address := Json.GetValue<string>('HAMLET.MAIL_ADDRESS');
pwd := Json.GetValue<string>('HAMLET.PWD');
qryHamlet.Close;
qryHamlet.SQL.Text := SQL_ITEM_INSERT;
qryHamlet.ParamByName('mail_address').AsString := mail_address;
qryHamlet.ParamByName('pwd').AsString := pwd;
qryHamlet.ExecSQL;
end;
이렇게 했습니다.
근데 get에서는 디버깅 브레이크가 되는데 왜 post에서는 안될까요?
그리고 위 post는 왜 동작을 했는데도 불구하고 테이블에 입력이 안될까요??
위 내용에 답변 부탁 드립니다. 그럼 수고하세요.
댓글 0
Delphi ems서버 에서 post관련
2019.08.26 20:22
안녕하세요.
데브기어 강좌를 보고 ems 서버를 하고 있는 중입니다.
강좌를 보면 ems 서버를 만든다음 get은 했는데 post가 안되서요.
get부분을 보면
procedure THamletResource1.Get(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse);
const
SQL_LIST ='SELECT MAIL_ADDRESS,PWD,ADDRESS,SEX FROM USER_TEST';
var
Writer : TJsonObjectWriter;
begin
qryHamlet.Close;
qryHamlet.SQL.Text := SQL_LIST;
qryHamlet.Open;
Writer := TJsonObjectWriter.Create;
try
Writer.WriteStartObject; // start resource
Writer.WritePropertyName('Hamlet');
Writer.WriteStartObject; // start item
Writer.WritePropertyName('total');
Writer.WriteValue(qryHamlet.RecordCount);
Writer.WritePropertyName('Hamlet');
Writer.WriteStartArray;
qryHamlet.First;
while not qryHamlet.Eof do
begin
Writer.WriteStartObject;
Writer.WritePropertyName('MAIL_ADDRESS');
Writer.WriteValue(qryHamlet.FieldByName('MAIL_ADDRESS').AsString);
Writer.WritePropertyName('PWD');
Writer.WriteValue(qryHamlet.FieldByName('PWD').AsString);
Writer.WritePropertyName('ADDRESS');
Writer.WriteValue(qryHamlet.FieldByName('ADDRESS').AsString);
Writer.WritePropertyName('SEX');
Writer.WriteValue(qryHamlet.FieldByName('SEX').AsString);
Writer.WriteEndObject;
qryHamlet.Next;
end;
Writer.WriteEndArray;
Writer.WriteEndObject; // end item
Writer.WriteEndObject; // end resource
// Sample code
AResponse.Body.SetValue(Writer.JSON as TJSONValue, True);
except
Writer.Free;
raise;
end;
위와같이 하면 데이터가 json 형태로 잘나옵니다.
그런데 post를 하면 에러도 안되고 잘 처리 됐다고 하는데
rest debugger 에 헤더 부분에
Connection=close
Date=Mon, 26 Aug 2019 11:10:09 GMT
Content-Length=0
이렇게 나오는데 테이블을 뒤져보면 인서트가 되지 않습니다.
그리고 디버깅을 할려고 브레이크를 걸어도 그자리가 디버깅이 안됩니다.
참고로 post 부분은
procedure THamletResource1.Post(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse);
const
SQL_ITEM_INSERT = 'INSERT INTO USER_TEST( MAIL_ADDRESS,PWD) '+' values (:mail_address,:pwd ) ';
var
mail_address,pwd : String;
Json : TJSONValue;
begin
Json := ARequest.Body.GetValue;
mail_address := Json.GetValue<string>('HAMLET.MAIL_ADDRESS');
pwd := Json.GetValue<string>('HAMLET.PWD');
qryHamlet.Close;
qryHamlet.SQL.Text := SQL_ITEM_INSERT;
qryHamlet.ParamByName('mail_address').AsString := mail_address;
qryHamlet.ParamByName('pwd').AsString := pwd;
qryHamlet.ExecSQL;
end;
이렇게 했습니다.
근데 get에서는 디버깅 브레이크가 되는데 왜 post에서는 안될까요?
그리고 위 post는 왜 동작을 했는데도 불구하고 테이블에 입력이 안될까요??
위 내용에 답변 부탁 드립니다. 그럼 수고하세요.