Android WSDL / SOAP service client
Mam kilka serwisów internetowych, które używają WSDL/SOAP do komunikacji. W szczególności używam PHP i Nusoap do ich tworzenia. Jak mogę korzystać z tych usług internetowych na Androidzie? Niedługo dostanę nowy telefon z Androidem, więc muszę wiedzieć.
Łatwo jest to zrobić z Windows Mobile i Visual Studio.
Thanks
7 answers
Android nie ma biblioteki SOAP. Możesz jednak pobrać bibliotekę innych firm tutaj:
https://github.com/simpligility/ksoap2-android
Jeśli potrzebujesz pomocy przy jej użyciu, ten wątek może okazać się pomocny:
Jak wywołać. NET Webservice z Androida za pomocą KSOAP2?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:12
Założyłem to narzędzie do automatycznego generowania wsdl do kodu Androida,
Http://www.wsdl2code.com/Example.aspx
public void callWebService(){
SampleService srv1 = new SampleService();
Request req = new Request();
req.companyId = "1";
req.userName = "userName";
req.password = "pas";
Response response = srv1.ServiceSample(req);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-05 08:10:46
Stworzyłem nowego klienta SOAP dla Platformy Android, jest to interfejs generowany przez JAX-WS, ale to jeszcze tylko proof-of-concept.
Jeśli jesteś zainteresowany, spróbuj przykładu i / lub obejrzyj źródło: http://wiki.javaforum.hu/display/ANDROIDSOAP/Home
Update: Wersja 0.0.4 jest już z tutorial:
Http://wiki.javaforum.hu/display/ANDROIDSOAP/2012/04/16/Version + 0.0.4 + wydany
Http://wiki.javaforum.hu/display/ANDROIDSOAP/Step+by + step + tutorial
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-27 20:02:19
Icesoap , który znalazłem wczoraj, wygląda obiecująco. Pracował nad testem podstawowym, ale brakuje mu więcej przykładów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-09 12:33:06
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://example.com/CRM/Service.svc";
private static final String SOAP_ACTION = "http://tempuri.org/Login";
private static final String METHOD_NAME = "Login";
//calling web services method
String loginresult=callService(username,password,usertype);
//calling webservices
String callService(String a1,String b1,Integer c1) throws Exception {
Boolean flag=true;
do
{
try{
System.out.println(flag);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pa1 = new PropertyInfo();
pa1.setName("Username");
pa1.setValue(a1.toString());
PropertyInfo pb1 = new PropertyInfo();
pb1.setName("Password");
pb1.setValue(b1.toString());
PropertyInfo pc1 = new PropertyInfo();
pc1.setName("UserType");
pc1.setValue(c1);
System.out.println(c1+"this is integer****s");
System.out.println("new");
request.addProperty(pa1);
request.addProperty(pb1);
request.addProperty(pc1);
System.out.println("new2");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
System.out.println("new3");
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
System.out.println("new4");
try{
androidHttpTransport.call(SOAP_ACTION, envelope);
}
catch(Exception e)
{
System.out.println(e+" this is exception");
}
System.out.println("new5");
SoapObject response = (SoapObject)envelope.bodyIn;
result = response.getProperty(0).toString();
flag=false;
System.out.println(flag);
}catch (Exception e) {
// TODO: handle exception
flag=false;
}
}
while(flag);
return result;
}
///
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-17 07:03:47
Właśnie ukończyłem aplikację na Androida o wsdl, mam kilka wskazówek do dodania:
1.najważniejszym zasobem jest www.wsdl2code.com
2.możesz wziąć nazwę użytkownika i hasło z nagłówkiem, który jest zakodowany w Base64, na przykład:
String USERNAME = "yourUsername";
String PASSWORD = "yourPassWord";
StringBuffer auth = new StringBuffer(USERNAME);
auth.append(':').append(PASSWORD);
byte[] raw = auth.toString().getBytes();
auth.setLength(0);
auth.append("Basic ");
org.kobjects.base64.Base64.encode(raw, 0, raw.length, auth);
List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
headers.add(new HeaderProperty("Authorization", auth.toString())); // "Basic V1M6"));
Vectordianzhan response = bydWs.getDianzhans(headers);
3.somethimes, nie jesteś pewien, czy kod Androida lub webserver jest zły, a następnie Debuguj na important.in sample, przechwytywanie "XmlPullParserException", log "requestDump" i "responseDump" w wyjątku.dodatkowo, ty powinien złapać pakiet IP za pomocą adb.
try {
Logg.i(TAG, "2 ");
Object response = androidHttpTransport.call(SOAP_ACTION, envelope, headers);
Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
Logg.i(TAG, "3");
} catch (IOException e) {
Logg.i(TAG, "IOException");
}
catch (XmlPullParserException e) {
Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
Logg.i(TAG, "XmlPullParserException");
e.printStackTrace();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 07:49:29
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set View to register.xml
setContentView(R.layout.register);
session = new UserSessionManeger(getApplicationContext());
login_id= (EditText) findViewById(R.id.loginid);
Suponser_id= (EditText) findViewById(R.id.sponserid);
name=(EditText) findViewById(R.id.name);
pass=(EditText) findViewById(R.id.pass);
moblie=(EditText) findViewById(R.id.mobile);
email= (EditText) findViewById(R.id.email);
placment= (EditText) findViewById(R.id.placement);
Adress= (EditText) findViewById(R.id.adress);
State = (EditText) findViewById(R.id.state);
city=(EditText) findViewById(R.id.city);
pincopde=(EditText) findViewById(R.id.pincode);
counntry= (EditText) findViewById(R.id.country);
plantype= (EditText) findViewById(R.id.plantype);
mRegister = (Button)findViewById(R.id.registration);
// session.createUserLoginSession(info.getCustomerID(),info.getName(),info.getMobile(),info.getEmailID(),info.getAccountType());
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
request.addProperty("LoginCustomerID",login_id.getText().toString());
request.addProperty("SponsorID",Suponser_id.getText().toString());
request.addProperty("Name", name.getText().toString());
request.addProperty("LoginPassword",pass.getText().toString() );
request.addProperty("MobileNumber",smoblie=moblie.getText().toString());
request.addProperty("Email",email.getText().toString() );
request.addProperty("Placement", placment.getText().toString());
request.addProperty("address1", Adress.getText().toString());
request.addProperty("StateID", State.getText().toString());
request.addProperty("CityName",city.getText().toString());
request.addProperty("Pincode",pincopde.getText().toString());
request.addProperty("CountryID",counntry.getText().toString());
request.addProperty("PlanType",plantype.getText().toString());
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
//this is the actual part that will call the webservice
androidHttpTransport.call(SOAP_ACTION1, envelope);
SoapObject result = (SoapObject)envelope.getResponse();
Log.e("value of result", " result"+result);
if(result!= null)
{
Toast.makeText(getApplicationContext(), "successfully register ", 2000).show() ;
}
else {
Toast.makeText(getApplicationContext(), "Try Again..", 2000).show() ;
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 10:06:55