개발/Java
ksoap2이용하여 SOAP API가져오기
자림이
2020. 9. 14. 22:48
반응형
현재 프로젝트에서 외부 연결을 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) {
}
simpligility/ksoap2-android
ksoap2-android - SOAP support for Android. Contribute to simpligility/ksoap2-android development by creating an account on GitHub.
github.com
416라인을 보시면 돼요.
반응형