Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7188107
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T18:59:39+00:00 2026-05-28T18:59:39+00:00

I am a begginer in android,here I have activity that use web service: SoapObject

  • 0

I am a begginer in android,here I have activity that use web service:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        
    GetBoundData val = new GetBoundData() {
    };
    PropertyInfo pi = new PropertyInfo();
    pi.setName("GetBoundData");
    pi.setValue(val);
    pi.setType(GetBoundData.class);
    request.addProperty(pi);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    Marshal floatMarshal = new MarshalFloat();

    envelope.addMapping(NAMESPACE, GetBoundData.class.getSimpleName(), GetBoundData.class);
    floatMarshal.register(envelope);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    androidHttpTransport.debug =true;
    TextView t = (TextView)this.findViewById(R.id.resultbox);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try {

        androidHttpTransport.call(SOAP_ACTION, envelope);
        System.out.println("aht requestDump is :"+androidHttpTransport.requestDump);
        System.out.println("aht responseDump is :"+androidHttpTransport.responseDump);
    } catch (Exception e) {
        e.printStackTrace(); 
    }
    try {

        Object result = (Object) envelope.bodyIn;
        String s = result.toString();
        t.setText(s);
    } catch (ClassCastException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        t.setText("1");
    }

and in GetBoundData class :

public abstract class GetBoundData implements KvmSerializable {

String Bound = "((-0.00021792948245596397, -0.0002648681402206421), (0.00021792948246868618, 0.0002648681402206421))";
String Zoom ="21";
public Object getProperty(int arg0) {
switch (arg0){
    case 0:
        return Bound;
    case 1:
        return Zoom;
    default:
        return null;
        }
}

public int getPropertyCount() {
    return 2;//because you have 2 parameters
}

public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
switch(arg0)
{

    case 0:
        arg2.type = PropertyInfo.STRING_CLASS;
        arg2.name = "Bound";
        break;
    case 1:
        arg2.type = PropertyInfo.STRING_CLASS;
        arg2.name = "Zoom";
        break;
    default:break;
}

}
public void setval(String bound, String zoom) {
            Bound =  bound;
            Zoom =  zoom;           

    }
public void setProperty(int arg0, Object arg1) {
switch(arg0)
{
    case 0:
        Bound =  (String)arg1;
        break;
    case 1:
        Zoom =  (String)arg1;           
        break;
    default:
        break;
}

}
}

and this is webservice xml

<wsdl:types>
 <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
  <s:element name="GetBoundData">
   <s:complexType>
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Bound" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="Zoom" type="s:string"/>
    </s:sequence>
   </s:complexType>
  </s:element>
  <s:element name="GetBoundDataResponse">
   <s:complexType>
     <s:sequence>
       <s:element minOccurs="0" maxOccurs="1" name="GetBoundDataResult"       type="tns:ArrayOfAnyType"/>
     </s:sequence>
   </s:complexType>
  </s:element>
  <s:complexType name="ArrayOfAnyType">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true"/>
    </s:sequence>
  </s:complexType>
 </s:schema>
</wsdl:types>

here webservice sample:

request:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema"     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
 <GetBoundData xmlns="http://tempuri.org/">
   <Bound>string</Bound>
   <Zoom>string</Zoom>
 </GetBoundData>
</soap:Body>
</soap:Envelope>

response:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
  <GetBoundDataResponse xmlns="http://tempuri.org/">
    <GetBoundDataResult>
      <anyType />
      <anyType />
    </GetBoundDataResult>
  </GetBoundDataResponse>
 </soap:Body>
</soap:Envelope>

but show this :

SoapFault - faultcode: 'soap:Server'
faultstring: 'Server was unable to process request. ---> Object reference not set to an
instance of an object.' faultactor: 'null' detail: org.kxml2.kdom.Node@44efb360

I used soapobject with getresponse() but error occurred

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T18:59:40+00:00Added an answer on May 28, 2026 at 6:59 pm

    Thats because you have complex type (ie Objects) and you are just adding “Simple type” property.
    check my answer here, i explained in details what needs to be done.
    You will also have to create local classes that match the complex type, these local classes should implement kvmserializable, for example:

    <s:element name="GetBoundData">
     <s:complexType>
      <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Bound" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="Zoom" type="s:string"/>
     </s:sequence>
    </s:complexType>
    

    means on the web service, there exists a class called “GetBoundData”. So since using ksoap2 you are building manually the soap envelope, you will have to create such a class in your app , implementing kvmserializable ( which is a ksoap2 serialization interface):

    public class GetBoundData implements KvmSerializable {
    
        String Bound; 
        String Zoom;
    
        @Override
        public Object getProperty(int arg0) {
        switch (arg0){
            case 0:
                return Bound;
            case 1:
                return Zoom;
            default:
                return null;
                }
        }
    
        @Override
        public int getPropertyCount() {
            return 2;//because you have 2 parameters
        }
    
        @Override
        public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
        switch(arg0)
        {
    
            case 0:
                arg2.type = PropertyInfo.STRING_CLASS;
                arg2.name = "Bound";
                break;
            case 1:
                arg2.type = PropertyInfo.STRING_CLASS;
                arg2.name = "Zoom";
                break;
            default:break;
        }
    
        }
    
        @Override
        public void setProperty(int arg0, Object arg1) {
        switch(arg0)
        {
            case 0:
                Bound =  (String)arg1;
                break;
            case 1:
                Zoom =  (String)arg1;           
                break;
            default:
                break;
        }
    }
    

    This is how you build locally a match for the Classes (object,ie complex type) on the server).
    Then you have to add the necessary properties, build the envelope, add Mapping and Marshalling and send the request. These Steps are all explained in the link i mentioned above.

    UPDATE
    I’ll explain to you what these are:

    <wsdl:message name="GetBoundDataSoapIn"> 
    <wsdl:part name="parameters" element="tns:GetBoundData"/> 
    </wsdl:message> 
    

    When is it wsdl:message it means it is a function required on the web service.
    it has , which means it requires a parameter of type GetBoundData which is not a primitive type, in fact it is a complex type (object).
    So here are the steps:
    1- you have to write a local representation , ie class, of the complex type GetBoundData ( i already wrote it above)
    2- In your application you have to create (its up to u where) a function that will call the function related to “GetBoundDataSoapIn” on the web service. So its a good idead to create a function whose name is significat ie something like:

     public GetBoundData getBoundData()
     {
      try
        {
            SoapObject sobj = new SoapObject(YOUR_NAMESPACE,THE_METHOD_NAME);
    
    
            //------------------------------------------------------------------------------
            //  GetBoundData :adding property
            //          <wsdl:message name="GetBoundDataSoapIn"> 
            //          <wsdl:part name="parameters" element="tns:GetBoundData"/> 
            //          </wsdl:message> 
            //  GetBoundData has two params:
            //      <s:element minOccurs="0" maxOccurs="1" name="Bound" type="s:string"/>
            //      <s:element minOccurs="0" maxOccurs="1" name="Zoom" type="s:string"/>
            //
            //--------------------------------------------------------------------------
    
            //--------------
            //  GetBoundData
            //--------------
            PropertyInfo pi = new PropertyInfo();
            pi.setName("GetBoundData");
            pi.setValue(Whatever_value_your_supposed_to_put);// these values are "Bound" And "Zoom" , they're supposed to be gotten in your app somewhere
            pi.setType(GetBoundData.class);
            sobj.addProperty(pi);
    
            //------------------------------
            //  START BUILDING SOAP ENVELOPE
            //------------------------------
            SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            soapEnvelope.setOutputSoapObject(sobj);
    
    
            //---------------------------------------------------------------------------------------
            //      MAPPINGS:   
            //---------------------------------------------------------------------------------------
    
            soapEnvelope.addMapping(YOUR_NAMESPACE, GetBoundData.class.getSimpleName(), GetBoundData.class);
    
            //---------------------------------------------------------------------------------------
            //      MARSHALLING: 
            //---------------------------------------------------------------------------------------
    
            Marshal floatMarshal = new MarshalFloat();
            floatMarshal.register(soapEnvelope);
    
    
            AndroidHttpTransport aht = new AndroidHttpTransport(YOUR_URL); 
    
    
            aht.debug = true;
    
            try 
            {
    
                aht.call(YOUR_ACTION, soapEnvelope);
    
                //Importat Outputs to check how the request/Response looks like.. Check Logcat to find these outputs
                System.out.println("aht requestDump is :"+aht.requestDump);
                System.out.println("aht responseDump is :"+aht.responseDump);
    
    
                return soapEnvelope.getResponse();
    
            } 
            catch (Exception e) 
            {
    
                e.printStackTrace();
                return "Exception: " + e.getMessage()+"  message IS :" +e.getMessage()+"  localizedmessage is :"+e.getLocalizedMessage();
            }
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
            return "Exception: " + ex.getMessage();
        }
        }
    }
    

    So check logCat to see the shape of request and response, and you’ll see if you have to get the response and parse it to use it, i am not sure what your response will be, but in my case it was a multidimensional array, so i had to parse it using java functionalities.

    as for:

    <wsdl:message name="GetBoundDataSoapOut"> 
    <wsdl:part name="parameters" element="tns:GetBoundDataResponse"/> 
    </wsdl:message> 
    

    this just tells you the web service sends back a response.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm quite a begginer and I have two tables: product and product attributes. Here's
As a new .net/C# web begginner, I always get tripped up when I try
I'm begginer in asp.net mvc and i have some doubts. P.S: I'm using DDD
I beginer programmer,and don't have any QA experience (only simple test that i write
I'm making a Grade log application and I have this piece of code here
Im new at tkinter so im a begginer.. I need help because i was
Well, now i have a new problem. Im writing code in C# I want
I'm a begginer in cookies and stuff like that. I need to set a
I'm C++ begginer. I did this excercise from Deitel's book: Use a one-dimensional array
I´m a begginer on C Language and I need to copy pixels to Android

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.