问题描述
即使添加了 kSOAP 2 library jar 文件,我也无法调用 aweb service.
源代码:
package com.example.web; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.AndroidHttpTransport; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class MyWebCall extends Activity { TextView tv; String Name_Space="http://web.exampl.com/"; String Method_Name="add"; String Soap_Action="http://web.exampl.com/add"; String URL="http://MyServerIPaddress:8081/WebService/services/MyWebService?wsdl"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv=(TextView)findViewById(R.id.txt); SoapObject request=new SoapObject(Name_Space,Method_Name); PropertyInfo pi1=new PropertyInfo(); pi1.setName("op1"); pi1.setValue(6); pi1.setType(int.class); request.addProperty(pi1); PropertyInfo pi2=new PropertyInfo(); pi2.setName("op1"); pi2.setValue(9); pi2.setType(int.class); request.addProperty(pi2); SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(URL); try{ androidHttpTransport.call(Soap_Action,envelope); SoapObject response=(SoapObject) envelope.getResponse(); int result=Integer.parseInt(response.getProperty(0).toString()); System.out.println("Result ::::::::::::::: "+result); tv.setText(response.getProperty(0).toString()); Toast.makeText(getApplicationContext(), response.getProperty(0).toString(),Toast.LENGTH_SHORT).show(); }catch(Exception e){ e.printStackTrace(); } } }
我觉得 jar 中缺少几个类.我可以从哪里找到正确的 jar 文件?请帮助我.
谢谢&问候,
斯内哈
推荐答案
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(URL);
我已将此行更改为:
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
而且效果很好.
也感谢完整的包 rekaszeru.
其他推荐答案
KSoap2要在Android上运行,核心库还不够.
您需要 完整包.
问题描述
I am not able to call aweb service even after adding kSOAP 2 library jar file.
Source code :
package com.example.web; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.AndroidHttpTransport; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class MyWebCall extends Activity { TextView tv; String Name_Space="http://web.exampl.com/"; String Method_Name="add"; String Soap_Action="http://web.exampl.com/add"; String URL="http://MyServerIPaddress:8081/WebService/services/MyWebService?wsdl"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv=(TextView)findViewById(R.id.txt); SoapObject request=new SoapObject(Name_Space,Method_Name); PropertyInfo pi1=new PropertyInfo(); pi1.setName("op1"); pi1.setValue(6); pi1.setType(int.class); request.addProperty(pi1); PropertyInfo pi2=new PropertyInfo(); pi2.setName("op1"); pi2.setValue(9); pi2.setType(int.class); request.addProperty(pi2); SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(URL); try{ androidHttpTransport.call(Soap_Action,envelope); SoapObject response=(SoapObject) envelope.getResponse(); int result=Integer.parseInt(response.getProperty(0).toString()); System.out.println("Result ::::::::::::::: "+result); tv.setText(response.getProperty(0).toString()); Toast.makeText(getApplicationContext(), response.getProperty(0).toString(),Toast.LENGTH_SHORT).show(); }catch(Exception e){ e.printStackTrace(); } } }
I feel few classes are missing in jar. From where can i dwnld proper jar file? Pls help me.
Thanks & Regards,
Sneha
推荐答案
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(URL);
I have changed this line to:
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
And it worked fine.
Also thanks for the full package rekaszeru.
其他推荐答案
For KSoap2 to work on Android, the core library is not enough.
You need the full package.