본문 바로가기

개발일지

[C#/WCF] 웹서비스 POSTMAN으로 테스트 하기

728x90

우선 Visual Studio 2015에서 기본적인 WCF 프로젝트를 생성하고 이 서비스를 외부에서 호출하여 테스트를 진행하였다.

아래처럼 프로젝트가 생성

생성과 동시에 기본 샘플소스 생성

그리고 바로 실행 테스트

GetData() 클릭하여 호출버튼을 클릭하면 응답 확인

XML 내용으로 확인

이제 하고 싶은 부분은 이 XML을 POSTMAN으로 전달하여 응답메시지를 받는 부분을 확인

우선 주소와 헤더 부분을 아래 처럼 등록한다.

Body 메시지에서 Header 부분은 삭제합니다. 이유는 Header 에 SOAPAction 을 추가 하였고 아래처럼 보내보니 응답 메시지가 오지 않음.

아래 화면 처럼 응답결과를 가져오면 정상 처리가 됨.

여기서 다시 자바 소스로 테스트를 해본다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Rest API Sample Source
 */
public class restApiTest {
    
    public static String sendREST(String sendUrl, String jsonValue) throws IllegalStateException {
        String inputLine = null;
        StringBuffer outResult = new StringBuffer();
        
        try {
            System.out.println("REST API Start");
            URL url = new URL(sendUrl);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "text/xml");
            conn.setRequestProperty("Accept-Charset", "UTF-8");
            //이부분은 SOAPAction 간단히 테스트 위해 추가함
            conn.setRequestProperty("SOAPAction", "http://tempuri.org/IService1/GetData");
            conn.setConnectTimeout(10000);
            conn.setReadTimeout(10000);
            
            OutputStream os = conn.getOutputStream();
            os.write(jsonValue.getBytes("UTF-8"));
            os.flush();
            
            int responseCode = conn.getResponseCode();
            if (responseCode == 400) {
                System.out.println("400:: 해당 명령을 실행할 수 없음 (실행할 수 없는 상태일 때, 엘리베이터 수와 Command 수가 일치하지 않을 때, 엘리베이터 정원을 초과하여 태울 때)");
            } else if (responseCode == 401) {
                System.out.println("401:: X-Auth-Token Header가 잘못됨");
            } else if (responseCode == 500) {
                System.out.println("500:: 서버 에러, 문의 필요");
            } else {            
                // 리턴된 결과 읽기
                BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                while ((inputLine = in.readLine()) != null) {
                    outResult.append(inputLine);
                }
            }
            conn.disconnect();
            System.out.println("REST API End");
        }catch(Exception e) {
            e.printStackTrace();
        }
        return outResult.toString();
    }
    
    public static void main(String[] args) {
        restApiTest obj = new restApiTest();       
      
        String message = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"> <s:Body> <GetData xmlns=\"http://tempuri.org/\"> "
            + "<value>13</value>     </GetData>   </s:Body> </s:Envelope>";

        try {
            String msgMap = sendREST("http://localhost:64539/Service1.svc", message);
            System.out.println(msgMap);
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과 

728x90