I want to connect to a dot.net based Webservice with my Android 4.03 Device using Ksoap2.
My problem is when i call the soap request i get this exception:
11-16 08:35:08.649: W/System.err(6392): java.lang.IllegalArgumentException: size <= 0
11-16 08:35:08.649: W/System.err(6392): at java.io.BufferedInputStream.<init>(BufferedInputStream.java:94)
11-16 08:35:08.649: W/System.err(6392): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:226)
11-16 08:35:08.649: W/System.err(6392): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:114)
11-16 08:35:08.649: W/System.err(6392): at at.jesenko.eDoc.MainActivity$1.run(MainActivity.java:48)
The Code im using
final String url = "http://server:9007/DWService?wsdl";
final String NAMESPACE = "http://tempuri.org/";
final String METHOD_NAME ="Login";
final String SOAP_ACTION="http://tempuri.org/Login";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread loginThread = new Thread(){
@Override
public void run() {
try {
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
Request.addProperty("userName", "demo");
Request.addProperty("password", "demo1234");
Request.addProperty("organization", "Peters Engineering");
SoapSerializationEnvelope Envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
Envelope.dotNet=true;
Envelope.setOutputSoapObject(Request);
HttpTransportSE ht = new HttpTransportSE(url);
ht.debug = true;
ht.call(SOAP_ACTION, Envelope);
SoapObject response = (SoapObject) Envelope.getResponse();
final String SessionID = response.getProperty("SessionID").toString();
runOnUiThread(new Runnable() {
public void run() {
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(SessionID);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
};
loginThread.start();
}
Here the part of the wsdl file which i want to call:
<wsdl:definitions name="DWService" targetNamespace="http://tempuri.org/">
<wsdl:types>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<xsd:element name="Login">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="userName" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="password" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="organization" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
I don´t have much expierience with Ksoap and Web-Services so i hope someone could help me solving this problem :)
greetings.
EDIT
i tryed using ?svc instead -> same errors :(
EDIT
Here the Header of the WSDL file maybe my Namespace is false
<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
xmlns:wsa10="http://www.w3.org/2005/08/addressing"
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:tns="http://tempuri.org/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://tempuri.org/" name="DWService">
-<wsdl:types>-
<xsd:schema targetNamespace="http://tempuri.org/" elementFormDefault="qualified">-
<xsd:element name="Login">-
<xsd:complexType>-
<xsd:sequence>
<xsd:element name="userName" type="xsd:string" nillable="true" minOccurs="0"/>
<xsd:element name="password" type="xsd:string" nillable="true" minOccurs="0"/>
<xsd:element name="organization" type="xsd:string" nillable="true" minOccurs="0"/></xsd:sequence>
</xsd:complexType>
</xsd:element>
-<xsd:element name="LoginResponse">
-<xsd:complexType>-
<xsd:sequence>
<xsd:element name="LoginResult" type="q1:ClientServiceSession" nillable="true" minOccurs="0"
xmlns:q1="http://schemas.datacontract.org/2004/07/DocuWare.WebServices.GAPIFunctionality.DataContracts"/>
</xsd:sequence></xsd:complexType></xsd:element>
And the Soap Part:
-<wsdl:binding name="BasicHttpBinding_IDWService" type="tns:IDWService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
-<wsdl:operation name="Login"><soap:operation style="document" soapAction="http://tempuri.org/IDWService/Login"/>
-<wsdl:input><soap:body use="literal"/></wsdl:input>
-<wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation>
-<wsdl:operation name="Logoff"><soap:operation style="document" soapAction="http://tempuri.org/IDWService/Logoff"/>
-<wsdl:input><soap:body use="literal"/></wsdl:input>
-<wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation>
-<wsdl:service name="DWService">
-<wsdl:port name="BasicHttpBinding_IDWService" binding="tns:BasicHttpBinding_IDWService"><soap:address location="http://localhost:9007/DWService"/></wsdl:port></wsdl:service>
Hope you can help me ;)
Use like this:
BasicHttpbinding:
i have made some changes in your code.
1)
change into
2) i have removed this part from your code.
3)
change into
make sure have you added internet permission in your manifest
if you didnt get the output by using this the problem might be your wsdl
For more Reference Hope this will help you.
PS.
WsHttpBinding:
Reference.