반응형
현재 프로젝트에서 외부 연결을 SOAP을 이용하여 가져와야 해서 프로젝트에 적용한 ksoap2 적용 모듈을 작성해볼게요.
Map<String,String> map = new HashMap<String,String>();
String SOAP_ACTION_WS_USP_MB_GET_TERM_MISU_SAB = ""; //SOAP 액션
String METHOD_NAME_WS_USP_MB_GET_TERM_MISU_SAB = ""; //메소드 네임
String NAMESPACE = "http://www.unierp.com/";
try {
SoapObject soapReq = new SoapObject(NAMESPACE, METHOD_NAME_WS_USP_MB_GET_TERM_MISU_SAB);
soapReq.addProperty("INDEX","1"); //필요한 파라미터
soapReq.addProperty("HP_TEL", hpTel);
//Soap 버전및 .donet 지원여부
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(soapReq);
HttpTransportSE aht = new HttpTransportSE(erpURL); //soap URL
aht.call(SOAP_ACTION_WS_USP_MB_GET_TERM_MISU_SAB, soapEnvelope);
SoapObject result = (SoapObject) soapEnvelope.bodyIn; //각 넘어온 xml구조에 맞게 property를 가져오시면 되요
SoapObject nameResult = (SoapObject) result.getProperty(0);
SoapObject nameResult2 = (SoapObject) nameResult.getProperty(1);
SoapObject nameResult3 = (SoapObject) nameResult2.getProperty(0);
int count = nameResult3.getPropertyCount();
for (int i = 0; i <= count - 1; i++) {
SoapObject simpleSuggestion = (SoapObject) nameResult3.getProperty(i);
map.put("C_YN", simpleSuggestion.getProperty("C_YN").toString().trim());
map.put("C_MSG", simpleSuggestion.getProperty("C_MSG").toString().trim());
}
} catch (Exception e) {
e.printStackTrace();
}
적용을 하면서 한 가지 의문이 생겼어요. obj.getProperty("C_MSG") 보통 없는 값이면 NULL 또는 ""빈 값을 리턴을 하는데 RuntimeException에러가 발생하여 SoapObject.java 소스를 봤어요.
public String getPropertyAsString(String name) {
Integer index = propertyIndex(name);
if (index != null) {
return getProperty(index.intValue()).toString();
} else {
throw new RuntimeException("illegal property: " + name);
}
}
이렇게 throw를 발생을 하고 있네요. 이 부분을 수정하여 프로젝트에 적용을 하면 되는데 그냥
//이렇게 get하기전에 count를 체크하여 가져오도록 했어요
if ( changeReason.getPropertyCount() > 0) {
}
416라인을 보시면 돼요.
반응형
'개발 > Java' 카테고리의 다른 글
egov 3.9버전 mybatis association 사용시 에러(org.apache.ibatis.javassist.util.proxy.SecurityActions.setAccessible) (0) | 2020.11.19 |
---|---|
Java Jpa Specifications사용하기 (0) | 2020.09.23 |
Java Custom Annotation (0) | 2020.08.19 |
JAVA Spring Validation (0) | 2020.08.19 |
자바 카카오 로그인(OPEN ID) (2) | 2020.08.12 |