根据wsdl生成android,Android WSDL/SOAP service client

问题

I have some web services that uses WSDL/SOAP for communication. Specifically, I am using PHP and Nusoap to make them. How can I use these web services on Android? I am going to get a new Android phone soon, so I need to know.

It is easy to do it with Windows Mobile and Visual Studio.

Thanks

回答1:

Android doesn't come with SOAP library. However, you can download 3rd party library here:

https://github.com/simpligility/ksoap2-android

If you need help using it, you might find this thread helpful:

How to call a .NET Webservice from Android using KSOAP2?

回答2:

i founded this tool to auto generate wsdl to android code,

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);

}

回答3:

I’ve created a new SOAP client for the Android platform, it is use a JAX-WS generated interfaces, but it is only a proof-of-concept yet.

If you are interested, please try the example and/or watch the source: http://wiki.javaforum.hu/display/ANDROIDSOAP/Home

Update: the version 0.0.4 is out with tutorial:

http://wiki.javaforum.hu/display/ANDROIDSOAP/2012/04/16/Version+0.0.4+released

http://wiki.javaforum.hu/display/ANDROIDSOAP/Step+by+step+tutorial

回答4:

Icesoap, which I found yesterday, looks promising. It worked on a basic test, but it lacks more examples.

回答5:

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;

}

///

回答6:

I have just completed a android App about wsdl,i have some tips to append:

1.the most important resource is www.wsdl2code.com

2.you can take you username and password with header, which encoded with Base64,such as :

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 headers = new ArrayList();

headers.add(new HeaderProperty("Authorization", auth.toString())); // "Basic V1M6"));

Vectordianzhan response = bydWs.getDianzhans(headers);

3.somethimes,you are not sure either ANDROID code or webserver is wrong, then debug

is important.in the sample , catching "XmlPullParserException" ,log "requestDump" and

"responseDump"in the exception.additionally, you should catch the IP package with 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();

}

回答7:

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();

}

}

});

}

}

来源:https://stackoverflow.com/questions/1484122/android-wsdl-soap-service-client

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值