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
'개발일지' 카테고리의 다른 글
json schema 클래스 생성 (json generator java class) (0) | 2021.06.03 |
---|---|
WCF 테스트 클라이언트 (0) | 2021.06.01 |
[web.Config ] DB접속 연결자 등록 하여 사용하기 (0) | 2021.05.22 |
Creating Help Pages for ASP.NET Web API 테스트 할 때 웹 게시를 하면 'XmlDocument.xml' 경로의 일부를 찾을 수 없습니다. 오류 발생 (0) | 2021.05.21 |
Visual Studio 2015의 .NET Framework 4 용 ASP.NET Web API (0) | 2021.05.19 |