KSOAP2 complex data type client not working

Basic Tutorials concerning: GUI, Views, Activites, XML, Layouts, Intents, ...

KSOAP2 complex data type client not working

Postby cutesamatwork » Tue Jul 13, 2010 2:42 pm

Hi,

I have enclosed http://imagebin.ca/view/Kus5VJ.html of response with this message.This is my kvm serializable java class
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.example.android.apis;
  2. import java.util.Hashtable;
  3. import org.ksoap2.serialization.PropertyInfo;
  4. import org.ksoap2.serialization.SoapSerializationEnvelope;
  5. public class getSearchAndResponse implements org.ksoap2.serialization.KvmSerializable {
  6.         private String login;
  7.         private String email;
  8.         private String UserID;
  9.         private String Forename;
  10.         private String Name;
  11.         private String company;
  12.         private String Password;
  13.         private String Designation;
  14.         private String phone;
  15.         private String report_to;
  16.  
  17.  
  18.  
  19.         public getSearchAndResponse(String login,String email,String UserID,String Forename,String Name,String company,String Password ,String Designation,String phone,String report_to){
  20.         this.login = login;
  21.         this.email = email;
  22.         this.UserID = UserID;
  23.         this.Forename = Forename;
  24.         this.Name = Name;
  25.         this.Password = Password;
  26.         this.company= company;
  27.         this.phone=phone;
  28.         this.Designation=Designation;
  29.         this.report_to=report_to;
  30.         }
  31.         public  getSearchAndResponse(){
  32.         super();
  33.         }
  34.          public void setPhone(String phone) {
  35.  
  36.                 this.phone = phone;
  37.             }
  38.              public String getPhone() {
  39.                 return phone;
  40.             }
  41.               public void setDesignation(String Designation){
  42.                 this.Designation=Designation;
  43.             }
  44.             public String getDesignation(){
  45.                 return Designation;
  46.             }
  47.             public void setCompname(String company) {
  48.                 this.company = company;
  49.             }
  50.              public String getCompname() {
  51.                 return company;
  52.             }
  53.              public void setPassword(String Password) {
  54.                 this.company = Password;
  55.             }
  56.              public String getPassword() {
  57.                 return Password;
  58.             }public void setName(String Name) {
  59.                 this.Name = Name;
  60.             }
  61.              public String getName() {
  62.                 return Name;
  63.             }public void setForename(String Forename) {
  64.                 this.Forename = Forename;
  65.             }
  66.              public String getForename() {
  67.                 return Forename;
  68.             }
  69.              public void setUserID(String UserID) {
  70.                 this.UserID = UserID;
  71.             }
  72.              public String getUserID() {
  73.                 return UserID;
  74.             }
  75.              public void setLogin(String login) {
  76.                 this.login = login;
  77.             }
  78.              public String getLogin() {
  79.                 return login;
  80.             }public void setEmail(String email) {
  81.  
  82.                 this.email = email;
  83.             }
  84.              public String getEmail() {
  85.                 return email;
  86.             }
  87.              
  88.              public void setReport_to(String report_to) {
  89.  
  90.                 this.report_to = report_to;
  91.             }
  92.              public String getReport_to() {
  93.                 return report_to;
  94.             }
  95.              @Override
  96.            public Object getProperty(int i) {
  97.                 switch (i)
  98.                 {
  99.              case 0:
  100.                 return getCompname();
  101.              case 1:
  102.                   return getPhone();
  103.                     case 2:
  104.                         return getLogin();
  105.                     case 3:
  106.                         return getReport_to();
  107.                     case 4:
  108.                         return getEmail();
  109.                     case 5:
  110.                         return getUserID();
  111.                     case 6:
  112.                         return getForename();
  113.                     case 7:
  114.                         return getName();
  115.                     case 8:
  116.                         return getDesignation();
  117.                     case 9:
  118.                         return getPassword();
  119.                         default:
  120.                     return null;
  121.  
  122.                 }
  123.                
  124.             }
  125.              @Override
  126.             public int getPropertyCount() {
  127.                 return 10;
  128.             }
  129.              @Override
  130.             public void setProperty(int i, Object o) {
  131.  
  132.                 switch (i)
  133.             {
  134.             case 0:
  135.                this.company = (java.lang.String)o;
  136.                        break;
  137.             case 1:
  138.                 this.Designation=(java.lang.String)o;
  139.                 break;
  140.             case 2:
  141.                 this.Forename=(java.lang.String)o;
  142.                 break;
  143.             case 3:
  144.                 this.Name=(java.lang.String)o;
  145.                 break;
  146.             case 4:
  147.                 this.Password=(java.lang.String)o;
  148.                 break;
  149.             case 5:
  150.                 this.UserID=(java.lang.String)o;
  151.                 break;
  152.             case 6:
  153.                 this.email=(java.lang.String)o;
  154.                 break;
  155.             case 7:
  156.                 this.login=(java.lang.String)o;
  157.                 break;
  158.              case 8:
  159.                  this.phone=(java.lang.String)o;
  160.                  break;
  161.               case 9:
  162.                   this.report_to=(java.lang.String)o;
  163.                   break;
  164.  
  165.             }
  166.             }
  167.             @Override
  168.             public void getPropertyInfo(int index, Hashtable hshtbl, PropertyInfo info) {
  169.                  switch (index)
  170.                 {
  171.                 case 0:
  172.                     info.type = PropertyInfo.STRING_CLASS;
  173.                     info.name = "compname";
  174.                     break;
  175.                 case 1:
  176.                     info.type = PropertyInfo.STRING_CLASS;
  177.                     info.name = "designation";
  178.                     break;
  179.                 case 2:
  180.                     info.type = PropertyInfo.STRING_CLASS;
  181.                     info.name = "email";
  182.                     break;
  183.                 case 3:
  184.                     info.type = PropertyInfo.STRING_CLASS;
  185.                     info.name = "forename";
  186.                     break;
  187.                 case 4:
  188.                     info.type = PropertyInfo.STRING_CLASS;
  189.                     info.name = "login";
  190.                     break;
  191.                 case 5:
  192.                     info.type = PropertyInfo.STRING_CLASS;
  193.                     info.name = "name";
  194.                     break;
  195.                      case 6:
  196.                     info.type = PropertyInfo.STRING_CLASS;
  197.                     info.name = "password";
  198.                     break;
  199.                      case 7:
  200.                     info.type = PropertyInfo.STRING_CLASS;
  201.                     info.name = "phone";
  202.                     break;
  203.                      case 8:
  204.                     info.type = PropertyInfo.STRING_CLASS;
  205.                     info.name = "report_to";
  206.                     break;
  207.                      case 9:
  208.                     info.type = PropertyInfo.STRING_CLASS;
  209.                     info.name = "userID";
  210.                     break;
  211.                    
  212.                 default:
  213.                     break;
  214.                 }
  215.  
  216.                
  217.             }
  218.            public void register(SoapSerializationEnvelope classMap)
  219.         {
  220.         classMap.addMapping("http://WS/getSearchAnd", "getSearchAndResponse",this.getClass());
  221.         }
  222.            
  223.         }
  224.  
  225.  
Parsed in 0.056 seconds, using GeSHi 1.0.8.4

This is my main classs were i call the ksoap2 webservice.
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.example.android.apis;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.ksoap2.SoapEnvelope;
  6. import org.ksoap2.serialization.SoapObject;
  7. import org.ksoap2.serialization.SoapSerializationEnvelope;
  8. import org.xmlpull.v1.XmlPullParserException;
  9. import org.ksoap2.transport.AndroidHttpTransport;
  10. import java.util.Vector;
  11. import android.app.Activity;
  12. import android.content.Intent;
  13. import android.os.Bundle;
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16. import android.widget.Button;
  17. import android.widget.EditText;
  18. import android.widget.TextView;
  19. import android.widget.Toast;
  20.  
  21. public class Activity2 extends Activity{
  22.         /** Called when the activity is first created. */
  23.         private static final String SOAP_ACTION = "http://WS/getSearchAndResponse";
  24.          private static final String METHOD_NAME = "getSearchAndResponse";
  25.          private static final String NAMESPACE = "http://WS";
  26.          private static final String URL = "http://192.168.1.2:8085/axis2/services/LocalDiscoverdb?wsdl";
  27.          
  28.         @Override
  29.         public void onCreate(Bundle State) {
  30.                 super.onCreate(State);
  31.                 setContentView(R.layout.main2);
  32.                 Button launch = (Button)findViewById(R.id.Button01);
  33.                 launch.setOnClickListener( new OnClickListener()
  34.                 {
  35.                         @Override
  36.                         public void onClick(View viewParam)
  37.                         {       // TODO Auto-generated method stub
  38.                         EditText compnameEditText =  (EditText) findViewById(R.id.EditText01);
  39.                         EditText connameEditText =  (EditText) findViewById(R.id.EditText02);
  40.                         String sCompName = compnameEditText.getText().toString();
  41.                         String sConName = connameEditText.getText().toString();
  42.                         TextView ResultText =  (TextView) findViewById(R.id.TextView03);
  43.                         if(sCompName.equals("") && sConName.equals("")){
  44.                                 Toast.makeText(Activity2.this, "Please enter Company Name and Contact Name",
  45.                                                 Toast.LENGTH_SHORT).show();
  46.                         }
  47.                         else{
  48.                                  Object response = null,obj;
  49.                                
  50.                                
  51.                                 AndroidHttpTransport  transport = new AndroidHttpTransport (URL);
  52.                                 SoapObject myObject = new SoapObject(NAMESPACE, METHOD_NAME);
  53.                                
  54.                                 myObject.addProperty("compname", sCompName);
  55.                                 myObject.addProperty("conname", sConName);
  56.                                 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
  57.                                 envelope.bodyOut = myObject;
  58.                                 envelope.setOutputSoapObject(myObject);
  59.                                 transport.debug = true;
  60.                                 try {
  61.                                     transport.call(SOAP_ACTION, envelope);
  62.                                     response = envelope.getResponse();
  63.                                    //Vector<getSearchAndResponse> re= (Vector<getSearchAndResponse>) envelope.getResponse();
  64.                                     SoapObject body = (SoapObject) envelope.bodyIn;
  65.                                     System.out.println(body.getProperty(0).toString());
  66.                                     ResultText.setText(body.getProperty(0).toString());
  67.                                                                    
  68.                                 } catch (IOException ex) {
  69.                                         System.out.println(ex.toString());
  70.                                     ex.printStackTrace();
  71.                                 } catch (XmlPullParserException ex) {
  72.                                         System.out.println(ex.toString());
  73.                                     ex.printStackTrace();
  74.                                 }
  75.                                 //Intent myIntent = new Intent(viewParam.getContext(), Activity3.class);
  76.                     //startActivity(myIntent);
  77.                         }
  78.                        
  79.  
  80.  
  81.                 }
  82.  
  83.                        
  84.                         }
  85.         );
  86. }
  87. }
  88.  
Parsed in 0.043 seconds, using GeSHi 1.0.8.4



Please help me to identify were would be the problem.
cutesamatwork
Freshman
Freshman
 
Posts: 9
Joined: Tue Jul 13, 2010 9:07 am

Top

Re: KSOAP2 complex data type client not working

Postby bwills80 » Thu Nov 04, 2010 6:12 pm

I'm not sure if you solved your problem, but here are some suggestions. I see that you have created a complex object, but did not add it as a property to your soap object. You should do the following.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. GetSearchAndResponse search = new GetSearchAndResponse();
  2. search.setPhone("555-5555");
  3. search.setLogin("myLogin");
  4. search.setEmail("fred@123.com");
  5. // set the rest of the "search" object properties
  6.  
  7.  
  8. myObject.addProperty("MyObject", search);
  9.  
Parsed in 0.034 seconds, using GeSHi 1.0.8.4


If you are using .Net you may need to add the line.
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. envelope.dotNet = true;
  2.  
Parsed in 0.034 seconds, using GeSHi 1.0.8.4


Good luck.

Brian
bwills80
Once Poster
Once Poster
 
Posts: 1
Joined: Thu Nov 04, 2010 5:57 pm

Top

Return to Novice Tutorials

Who is online

Users browsing this forum: No registered users and 3 guests