Próbuję napisać apkę na Androida, która będzie wykorzystywać ich WebAPI, które jest usługą SOAP. I mam kodzik (używający kSOAP1):
public final class AllegroSoapClient {
private static final String API_NAMESPACE = "urn:AllegroWebApi";
private static final String API_KEY = "KEY";
private static final int LOCAL_VERSION = VERSION;
private static final int COUNTRY_CODE = 228;
private String sessionToken;
private HttpTransportSE transport = new HttpTransportSE(
"http://webapi.allegro.pl/uploader.php?wsdl");
public AllegroSoapClient() {
transport.debug = true;
}
/**
* Login to Allegro WebAPI
* @param username User login
* @param password User Password
* @throws IOException
* @throws XmlPullParserException
*/
public void login(String username, String password) throws IOException,
XmlPullParserException {
SoapObject rpc = new SoapObject(API_NAMESPACE, "doLogin");
rpc.addProperty("user-login", username);
rpc.addProperty("user-password", password);
rpc.addProperty("country-code", COUNTRY_CODE);
rpc.addProperty("webapi-key", API_KEY);
rpc.addProperty("local-version", LOCAL_VERSION);
sessionToken = sendRequest("doLogin", rpc).getPropertyAsString("session-handle-part");
}
/**
* Search for given string
* @param search
*/
public void search(String search) {
SoapObject rpc = new SoapObject(API_NAMESPACE, "doSearch");
rpc.addProperty("session-handle", sessionToken);
SoapObject searchRequest = new SoapObject(API_NAMESPACE, "SearchOptType");
searchRequest.addProperty("search-string", search);
rpc.addProperty("search-query", searchRequest);
}
/**
* Get current user session token
* @return current session token
*/
public String getSessionToken() {
return sessionToken;
}
private SoapObject sendRequest(String actionName, SoapObject rpc)
throws IOException, XmlPullParserException {
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(rpc);
transport.call(actionName, envelope);
return (SoapObject) envelope.getResponse();
}
}
Jednak ciągle metoda transport.call(...)
rzuca mi wyjątkiem org.xml.v1.XmlPullParserException: unexpected type
.