자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi Rest web server
2017.06.05 10:42
오늘도 수고가 많으십니다 !
다름이 아니라 이제막 server를 공부하는 학생인데 아직 모르는게 많아
아주 기초적인 부분을 몰라서 이렇게 질문하게 되었습니다.
serverMethodsunit 에서
procedure test (data : string);
procedure TFiton_Server.test(data: string);
var st : string;
begin
st := data;
end;
프로시저를 생성 하였습니다
http://192.168.0.10:8080/datasnap/rest/servermethods/test/testdata
클라이언트에서 이런식으로 데이터를 넘겨주면 server 의 파라미터 값에 값이 오지만
http://192.168.0.10:8080/datasnap/rest/servermethods/test?data=testdata
post 방식으로 값을 넘겨주면 파라미터로 값을 받지 못합니다
key = value 값이니 받는 방식이 다를 것 같은데
받는 방법에 대해 조언좀 해주시면 감사하겠습니다 !
바쁘신데 읽어주셔서 감사합니다 !
댓글 6
-
나즈나
2017.06.05 13:28
-
nickname
2017.06.05 13:51
client 에서 server 로 key , value 값을 request 하는게 post 아닌가염 ??
server 에서 key value 값으로 넘어온 파라미터를 받아야 하는데 잘 안되네요 ㅠㅠ
-
나즈나
2017.06.05 13:58
아 델파이에서 값전달 자체를 post라 했죠. 요즘 웹을 하느라 http 에서의 post get 을 설명했네요.
get 파라메타 전달은 어디에서 받나요? ?data=value 부분이요. 위 코드에 그쪽 부분은 안보이네요.
저는 데이터스냅을 안쓰고 별도로 만들어서 써서 그런일이 없었는데, 데이터스냅이 제가 알기온 URI 매핑방식으로만 동작하는 걸로 알고 있습니다. 그래서 get 파타메타는 별도로 처리해주거나 json으로 주고받는걸로 알고 있습니다.
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/DataSnap_REST_Messaging_Protocol
-
nickname
2017.06.05 14:10
?data=value 값은 c# client 에서 값을 전달해주고 있습니다.
using (var client = new WebClient())
{
string address = "http://localhost:8080/datasnap/rest/test";
var path = "C:\\Users\\KKY\\Pictures\\1.PNG";
var imageFileStream = System.IO.File.ReadAllBytes(path);
var imageString = Convert.ToBase64String(imageFileStream);
var data = new NameValueCollection();
data.Add("data", imageString);
client.UploadValues(address, data);
}
C# 코드는 이렇게 사용 중입니다
로컬 경로에 있는 사진의 byte 를 string 으로 convert 시켜 key 값은 data 로 value 값은 string 으로 convert 한값으로 해서
해당 uri 로 post 했습니다 !
-
나즈나
2017.06.05 14:43
와우 이미지를 get 파라메타로 보내시네요..
이렇게는 어떠신가요 기존 URI 매핑방식으로 받으면 /rest/뒤의 testdata 라는 데이터가 입력된다고 하셨죠?
그러면 test?data=value... 의 값을 받아서 앞에 서두만 split 하는 방법도 되지 않나요?
사실 제일 좋은 방법은 해당 주소로 http post 파라메타 방식으로 json으로 넘기는게 제일 좋은 방법 같습니다만..
-
nickname
2017.06.05 15:54
친절한 설명 감사합니다 !!
아무래도 json으로 값을 넘기는게 제일 나을 것 같습니다 !
아직 부족한 부분이 많네요 ㅠㅠ
Delphi Rest web server
2017.06.05 10:42
오늘도 수고가 많으십니다 !
다름이 아니라 이제막 server를 공부하는 학생인데 아직 모르는게 많아
아주 기초적인 부분을 몰라서 이렇게 질문하게 되었습니다.
serverMethodsunit 에서
procedure test (data : string);
procedure TFiton_Server.test(data: string);
var st : string;
begin
st := data;
end;
프로시저를 생성 하였습니다
http://192.168.0.10:8080/datasnap/rest/servermethods/test/testdata
클라이언트에서 이런식으로 데이터를 넘겨주면 server 의 파라미터 값에 값이 오지만
http://192.168.0.10:8080/datasnap/rest/servermethods/test?data=testdata
post 방식으로 값을 넘겨주면 파라미터로 값을 받지 못합니다
key = value 값이니 받는 방식이 다를 것 같은데
받는 방법에 대해 조언좀 해주시면 감사하겠습니다 !
바쁘신데 읽어주셔서 감사합니다 !
댓글 6
-
나즈나
2017.06.05 13:28
-
nickname
2017.06.05 13:51
client 에서 server 로 key , value 값을 request 하는게 post 아닌가염 ??
server 에서 key value 값으로 넘어온 파라미터를 받아야 하는데 잘 안되네요 ㅠㅠ
-
나즈나
2017.06.05 13:58
아 델파이에서 값전달 자체를 post라 했죠. 요즘 웹을 하느라 http 에서의 post get 을 설명했네요.
get 파라메타 전달은 어디에서 받나요? ?data=value 부분이요. 위 코드에 그쪽 부분은 안보이네요.
저는 데이터스냅을 안쓰고 별도로 만들어서 써서 그런일이 없었는데, 데이터스냅이 제가 알기온 URI 매핑방식으로만 동작하는 걸로 알고 있습니다. 그래서 get 파타메타는 별도로 처리해주거나 json으로 주고받는걸로 알고 있습니다.
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/DataSnap_REST_Messaging_Protocol
-
nickname
2017.06.05 14:10
?data=value 값은 c# client 에서 값을 전달해주고 있습니다.
using (var client = new WebClient())
{
string address = "http://localhost:8080/datasnap/rest/test";var path = "C:\\Users\\KKY\\Pictures\\1.PNG";
var imageFileStream = System.IO.File.ReadAllBytes(path);
var imageString = Convert.ToBase64String(imageFileStream);var data = new NameValueCollection();
data.Add("data", imageString);client.UploadValues(address, data);
}C# 코드는 이렇게 사용 중입니다
로컬 경로에 있는 사진의 byte 를 string 으로 convert 시켜 key 값은 data 로 value 값은 string 으로 convert 한값으로 해서
해당 uri 로 post 했습니다 !
-
나즈나
2017.06.05 14:43
와우 이미지를 get 파라메타로 보내시네요..
이렇게는 어떠신가요 기존 URI 매핑방식으로 받으면 /rest/뒤의 testdata 라는 데이터가 입력된다고 하셨죠?
그러면 test?data=value... 의 값을 받아서 앞에 서두만 split 하는 방법도 되지 않나요?
사실 제일 좋은 방법은 해당 주소로 http post 파라메타 방식으로 json으로 넘기는게 제일 좋은 방법 같습니다만..
-
nickname
2017.06.05 15:54
친절한 설명 감사합니다 !!
아무래도 json으로 값을 넘기는게 제일 나을 것 같습니다 !
아직 부족한 부분이 많네요 ㅠㅠ
두번째 방식은 post가 아니라 get입니다..