title: how to Call ksoap web service from android?
body: <p>I have a small confusion, in our mobile app an ksoap web service called from ios like below : and getting data properly. Here in the following web service you can see from following code, there are some parameters need to pass to the web service.</p>
  
  <pre><code> -(void)callwebservice{
      NSString *soapMessage = [NSString stringWithFormat:
                               @"&lt;s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"&gt;&lt;s:Body&gt;&lt;Calculate xmlns=\"http://tempuri.org/\"&gt;&lt;inputRate&gt;%@&lt;/inputRate&gt;&lt;rateFrequency xmlns:a=\"http://schemas.datacontract.org/2004/07/FusionPeople.MobileContractor.DomainModel\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"&gt;&lt;a:RateFrequencyId&gt;0&lt;/a:RateFrequencyId&gt;&lt;a:RateFrequencyName&gt;%@&lt;/a:RateFrequencyName&gt;&lt;/rateFrequency&gt;&lt;nonTaxableExpense&gt;%@&lt;/nonTaxableExpense&gt;&lt;expenseFrequency xmlns:a=\"http://schemas.datacontract.org/2004/07/FusionPeople.MobileContractor.DomainModel\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"&gt;&lt;a:RateFrequencyId&gt;0&lt;/a:RateFrequencyId&gt;&lt;a:RateFrequencyName&gt;%@&lt;/a:RateFrequencyName&gt;&lt;/expenseFrequency&gt;&lt;/Calculate&gt;&lt;/s:Body&gt;&lt;/s:Envelope&gt;\n",txtinputrate.text,lblrate.text,txtexpenses.text,lblexpense.text
                               ];
  
      NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@MobileContractorCalculationService.svc",[MobileContractorAppDelegate getstrIpAddress] ]];
      NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
      NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMessage length]];
      [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
      [theRequest addValue:@"http://tempuri.org/IMobileContractorCalculationService/Calculate" forHTTPHeaderField:@"SOAPAction"];
      [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
      [theRequest setHTTPMethod:@"POST"];
      [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
      NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
      if( theConnection ){
          webData = [NSMutableData data] ;
      }
  }
  </code></pre>
  
  <p>And other side at android side i have tried so many ways to call this web service and pass data to web service .But every time i getting server side error code: 415, Please somebody help me and tell me how to pass this hierarchical data to this type of ksoap web service....</p>
  
  <p>I have tried following code  : </p>
  
  <pre><code>try {
  
               SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
  
               request.addProperty("inputRate", 1000);
  
               SoapObject rate = new SoapObject(SOAP_ACTION, "rateFrequency");
  
               PropertyInfo info = new PropertyInfo();
               info.setName("RateFrequencyId");
               info.setValue(0);
               rate.addProperty(info);
  
               PropertyInfo info2 = new PropertyInfo();
               info2.setName("RateFrequencyName");
               info2.setValue("Hourly");
               rate.addProperty(info2);
  
               request.addProperty("rateFrequency", rate);
  
               request.addProperty("nonTaxableExpense", 500);
  
               SoapObject exp = new SoapObject(SOAP_ACTION, "expenseFrequency");
  
               PropertyInfo info3 = new PropertyInfo();
               info3.setName("RateFrequencyId");
               info3.setValue(0);
               exp.addProperty(info3);
  
               PropertyInfo info4 = new PropertyInfo();
               info4.setName("RateFrequencyName");
               info4.setValue("Hourly");
               exp.addProperty(info4);
  
               request.addProperty("expenseFrequency", exp);
  
               Log.v("", "=========== Request : " + request);
  
               SoapSerializationEnvelope envelope = new
               SoapSerializationEnvelope(
               SoapEnvelope.VER11);
               envelope.dotNet = true;
               envelope.setOutputSoapObject(request);
               HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
  
               try {
               androidHttpTransport.call(SOAP_ACTION, envelope);
               SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
               Log.v("myApp",
               "========================== Res" + response.toString());
  
  
  
               } catch (Exception e) {
               e.printStackTrace();
               }
  </code></pre>
  
  <p>But it getting following error : </p>
  
  <pre><code>    09-09 14:33:18.054: V/(957): =========== Request : Calculate{inputRate=1000; rateFrequency=rateFrequency{RateFrequencyId=0; RateFrequencyName=Hourly; }; nonTaxableExpense=500; expenseFrequency=expenseFrequency{RateFrequencyId=0; RateFrequencyName=Hourly; }; }
  09-09 14:33:30.264: W/System.err(957): java.io.IOException: HTTP request failed, HTTP status: 500
  09-09 14:33:30.264: W/System.err(957):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195)
  09-09 14:33:30.264: W/System.err(957):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:116)
  09-09 14:33:30.264: W/System.err(957):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:111)
  09-09 14:33:30.264: W/System.err(957):  at com.example.ksoapwebserviceexample.MainActivity.call(MainActivity.java:318)
  09-09 14:33:30.264: W/System.err(957):  at com.example.ksoapwebserviceexample.MainActivity$testReq.doInBackground(MainActivity.java:185)
  09-09 14:33:30.264: W/System.err(957):  at com.example.ksoapwebserviceexample.MainActivity$testReq.doInBackground(MainActivity.java:1)
  09-09 14:33:30.274: W/System.err(957):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
  09-09 14:33:30.274: W/System.err(957):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  09-09 14:33:30.274: W/System.err(957):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
  09-09 14:33:30.274: W/System.err(957):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
  09-09 14:33:30.274: W/System.err(957):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
  09-09 14:33:30.274: W/System.err(957):  at java.lang.Thread.run(Thread.java:1096)
  </code></pre>