Reputation: 153
I must make the following soap request, but we can not succeed, I tried in several ways and fails, I always get a blank field in response.
Request should look like this:
POST /service.asmx HTTP/1.1
Host: host
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "SOAPAction"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetQuickParkEvents xmlns="NAMESPACE">
<User>
<ID>int</ID>
<Name>string</Name>
<UserName>string</UserName>
<Password>string</Password>
</User>
<Filter>
<TimeSpan>
<Since>dateTime</Since>
<To>dateTime</To>
</TimeSpan>
<Reg>string</Reg>
<Nalog>string</Nalog>
<Status>string</Status>
<Value>string</Value>
</Filter>
</GetQuickParkEvents>
</soap:Body>
</soap:Envelope>
I have this code for now:
public static Object vrati_ds(String id, String name, String username, String password, String since, String to, String reg, String korisnik, String nalog, String nameString status, String value){
try{
SoapObject _client = new SoapObject(Konstante.NAMESPACE1, Konstante.METHOD_NAME);
_client.addProperty("ID", id);
_client.addProperty("Name", name);
_client.addProperty("UserName", username);
_client.addProperty("Password", password);
_client.addProperty("Since", since);
_client.addProperty("To", to);
_client.addProperty("Reg", reg);
_client.addProperty("Korisnik_app", korisnik);
_client.addProperty("Nalog", nalog);
_client.addProperty("Status", status);
_client.addProperty("Value", value);
SoapSerializationEnvelope _envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
_envelope.dotNet = true;
_envelope.setOutputSoapObject(_client);
HttpTransportSE _ht = new HttpTransportSE(Konstante.URL1);
_ht.call(Konstante.SOAP_ACTION, _envelope);
return _envelope.getResponse();
} catch(Exception e) {
return null;
}
}
I thank you in advance if anyone can help me!
Upvotes: 2
Views: 6626
Reputation: 215
A bit late, but here's an answer. Based on the this tips, you could follow some examples. For your case, I believe this should work:
SoapObject request = new SoapObject(Konstante.NAMESPACE1, "GetQuickParkEvents");
SoapObject user = new SoapObject(Konstante.NAMESPACE1, "User");
user.addProperty("ID", "int");
user.addProperty("Name", "string");
user.addProperty("UserName", "UserName");
user.addProperty("Password", "Password");
SoapObject filter = new SoapObject(Konstante.NAMESPACE1, "Filter");
SoapObject timeSpan = new SoapObject(Konstante.NAMESPACE1, "TimeSpan");
timeSpan.addProperty("Since", "dateTime");
timeSpan.addProperty("To", "dateTime");
filter.addSoapObject(timeSpan);
filter.addProperty("Reg", "string");
filter.addProperty("Nalog", "string");
filter.addProperty("Status", "string");
filter.addProperty("Value", "string");
request.addSoapObject(user);
request.addSoapObject(filter);
Upvotes: 1
Reputation: 11
I also encountered the same problem. It seems that the envelope has a limit for the SOAP length, which is not allowed to be large than 500...Not for sure.
Upvotes: 1
Reputation: 153
For now I hardcoded xml request manually, so if anyone can help, here are the source code which works:
public static Object getEvent2(int id, String name, String username, String password, String since, String to,
String reg, String nalog, String status, String value ) throws Exception {
String response= null;
String xml = null;
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Konstante.URL);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.encodingStyle = SoapSerializationEnvelope.ENC;
String bodyOut = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";
bodyOut += "<soap:Body><"+Konstante.EVENS_METHOD_NAME+" xmlns=\"" + Konstante.NAMESPACE + "\">";
bodyOut += "<User><ID>" + id + "</ID><Name>" + name + "</Name><UserName>";
bodyOut += username + "</UserName><Password>" + password + "</Password></User>";
bodyOut += "<Filter><TimeSpan><Since>" + since + "+02:00" + "</Since><To>" + to + "+02:00" +"</To></TimeSpan>";
bodyOut += "<Reg>" + reg + "</Reg><Nalog>" + nalog + "</Nalog><Status>" + status + "</Status><Value>" + value + "</Value></Filter>";
bodyOut += "</"+Konstante.EVENS_METHOD_NAME+"></soap:Body></soap:Envelope>";
xml = bodyOut;
StringEntity se = new StringEntity(xml, HTTP.UTF_8);
se.setContentType("text/xml");
httpPost.addHeader(Konstante.EVENS_SOAP_ACTION, Konstante.URL);
httpPost.setEntity(se);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity resEntity = httpResponse.getEntity();
response = EntityUtils.toString(resEntity);
return response;
}
Upvotes: 2
Reputation: 93
Here is the ksoap2 tutorial:
If you'd like more specific assistance please post your current code.
Upvotes: 0