How to make a SoapRequest

The script below does a SOAP requirment (wsdl = "http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl") ... from an IP address that is entered by the user illustrated in the figure 1, and then returns the regional information of this IP and fills in the table also shown in the figure 1.

Figure 1
Page is called Soaptest
public Response actionIndex() throws IOException, IllegalArgumentException, IllegalAccessException {
Soaptest model = new Soaptest();
model.load();
SoaptestView view = new SoaptestView();
/*----#gen-example
EXAMPLES COPY/PASTE:
INFO: Core.query(null,... change 'null' to your db connection name, added in Application Builder.
model.loadTable_1(Core.query(null,"SELECT 'Accusantium perspiciatis amet' as cidade,'Sit natus sit aperiam sit' as country,'Lorem unde ut rem consectetur' as country_code,'Omnis ut voluptatem unde rem' as latitude,'Rem totam accusantium deserunt' as longitude,'Magna ipsum doloremque totam u' as provincia "));
----#gen-example */
/*----#start-code(index)----*/
String wsdlUrl = "http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl";
// An Map of Soap HTTP Headers
Map<String, String> headers = new HashMap<String, String>();
headers.put("soapAction", "http://ws.cdyne.com/ResolveIP");
// An Map of Soap Envelope namespace
Map<String, String> namespaces = new HashMap<String, String>();
namespaces.put("SOAP-ENV", "http://www.w3.org/2003/05/soap-envelope");
namespaces.put("ws", "http://ws.cdyne.com/");
// <ws:ResolveIP>
// <ws:ipAddress>?</ws:ipAddress>
// <ws:licenseKey>?</ws:licenseKey>
//</ws:ResolveIP>
Map<String, Object> bodyContent = new HashMap<String, Object>();
Map<String, Object> subContent = new HashMap<String, Object>();
if (Core.isNotNull(model.getIp_address())) {
subContent.put("ws:ipAddress", model.getIp_address());
subContent.put("ws:licenseKey", "");
bodyContent.put("ws:ResolveIP", subContent);
nosi.core.webapp.webservices.soap.SoapClient sc = Core.soapClient(wsdlUrl, namespaces, headers,
bodyContent);
if (sc != null && sc.hasErrors()) { // Verifica se ocorreu algum erro ...
Core.setMessageError(Arrays.toString(sc.getErrors().toArray()));
} else {// Preencher os dados na tabela
// retorna soap body como um java.util.Map
Map<String, Object> map = sc.getResponseBody("soap");
if (map != null) {
List<Soaptest.Table_1> table1 = new ArrayList<>();
map = (Map<String, Object>) map.get("ResolveIPResponse");
if (map != null)
map.forEach((k, v) -> {
Map<String, String> l = (Map<String, String>) v;
Soaptest.Table_1 row = new Soaptest.Table_1();
row.setCidade(l.get("City"));
row.setCountry(l.get("Country"));
row.setCountry_code(l.get("CountryCode"));
row.setLatitude(l.get("Latitude"));
row.setLongitude(l.get("Longitude"));
row.setProvincia(l.get("StateProvince"));
table1.add(row);
});
model.setTable_1(table1);
}
}
}
/*----#end-code----*/
view.setModel(model);
return this.renderView(view);
}