2009. 12. 4. 14:07ㆍWEB/WebService
1. 제안내용
-
노출된 Endpoint(Uri)를 통해 SOAP 메시지를 수신할 수 있는 서버 구축
-
WCF를 사용
-
메시지에 대한 수신 및 응답
-
Post를 이용해 동기식 메시지 응답
2. 진행사항
-
REST는 잘 정의된 URI를 통해서 임의의 Object를 표현하는 방식이며, HTTP Verbs 즉, GET(fetch), PUT(update/insert or Append), DELETE를 통해 Object를 얻을 수 있음
-
ASP.NET Web Application Project를 VS 2008을 이용해서 만들고, add item에 New item하여, WCF Service를 추가
-
WebGet property는 HTTP Verb의 HTTP GET 방식이며, Representation Format은 XML이나, JSON을 지원하는 데, Xml format을 설정
-
WebGet은 URI를 이용해 자원을 사용하므로 사용에 제한이 있음 - > WebInvoke 를 사용해 해결
-
WebInvoke propert는 HTTP Verb의 나머지 PUT, DELETE를 통해 Object를 사용 (HTTP Post 방식 사용)
1: /// <summary>
2: /// 세금계산서 제출 후 응답메시지 수신 및 수신확인 메시지 전송
3: /// </summary>
4: /// <param name="_ResponseMessage">응답메시지</param>
5: [OperationContract]
6: [WebInvoke(UriTemplate = "/", Method = "POST",
7: RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
8: string ResponseMessage(ResponseMessage _ResponseMessage);
-
UriTemplate: 자원 접근을 위한 경로
-
Method: 서비스 작업이 응답하는 프로토콜(예: HTTP) 메서드를 가져오고 설정
6. 응답 메시지 수신 및 응답
1: public string ResponseMessage(ResponseMessage _ResponseMessage)
2: {
3: try
4: {
5: File.WriteAllText(HttpContext.Current.Server.MapPath
6: xTest/SoapReceiverTest/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt"), _ResponseMessage.soapEnvelope.OuterXml);
7:
8: return "메시지가 성공적으로 전송되었습니다. 결과는 익일 확인하실 수 있습니다.“;
9: }
10: catch (Exception ex)
11: {
12: return "";
13: }
14: }
7. REST 서비스를 위한 Web.config 설정(webHttpBinding과 endpoint Behavior로써 webHttp를 지원하도록 Config에 설정)
8. Http POST를 이용해 웹 서비스 동기 식 요청 및 응답
1: // 1. 웹 서비스 요청
2: HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(_Url);
3:
4: httpWebRequest.ContentType = "text/xml; charset=\"utf-8\"";
5:
6: httpWebRequest.Method = "POST";
7:
8: byte[] envelopeBytes = System.Text.Encoding.UTF8.GetBytes(_Envelope);
9:
10: httpWebRequest.ContentLength = envelopeBytes.Length;
11:
12: // 문자-> Byte 변환
13: Stream requestStream = httpWebRequest.GetRequestStream();
14:
15: requestStream.Write(envelopeBytes, 0, envelopeBytes.Length);
16:
17: requestStream.Flush();
18:
19: requestStream.Close();
20:
21: // 2. 웹 서비스 요청 결과 응답
22: WebResponse webResponse = httpWebRequest.GetResponse();
23:
24: Stream responseStream = webResponse.GetResponseStream();
25: StreamReader responseReader = new StreamReader(responseStream);
26:
27: string responseString = responseReader.ReadToEnd();
28:
29: webResponse.Close();
3. 결과사항
Post 방식으로 웹 서비스 호출 및 동기 식 응답메시지 수신
'WEB > WebService' 카테고리의 다른 글
[WCF] WCF-Rest를 이용한 SOAP Receiver (0) | 2009.11.30 |
---|---|
[WCF] 대용량 데이터를 서버로 전송하기 위해 필요한 설정 (0) | 2009.11.27 |
[WCF] Global Level에서 Exception 처리 또는 기록 (0) | 2009.11.22 |