2012-02-21 10 views
3

ksoapライブラリを使用してWebサービスにdouble値を送信しようとしています。 これは私が試みたものですが、動作しません。誰でもこの仕事をする方法を説明することはできますか?Android - wsサービスにdouble値を送信する方法

public String getDataForStaticSearch() throws SoapFault 
{ 

    String data = ""; 
    String serviceUrl = RB_Constant.RB_Webservice_URL; 
    String serviceNamespace = RB_Constant.RB_Webservice_Namespace; 
    String soapAction = "http://www.roadbrake.com/GetSearchResultsV2"; 
    String type_of_soap = "GetSearchResultsV2"; 

    PropertyInfo headingdirectionObj = new PropertyInfo(); 
    headingdirectionObj.name = "headingdirection"; 
    headingdirectionObj.type = PropertyInfo.INTEGER_CLASS; 

    try 
    { 
     SoapObject Request = new SoapObject(serviceNamespace, type_of_soap); 

     // strUserLatitude and strUserLongitude are of type double. 
     // How to pass these values to ws. 
     Request.addProperty("strUserLatitude", 33.924012);   
     Request.addProperty("strUserLongitude", -118.3832772); 

     //headingdirectionObj is of type int 
     Request.addProperty(headingdirectionObj, 0); 

     System.out.println("Request Value->"+Request.toString()); 

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(Request); 

     try 
     { 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(serviceUrl); 
      androidHttpTransport.call(soapAction, envelope); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Webservice calling error ->"+e.toString()); 
     } 

     SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
     data = response.toString(); 
     System.out.println("web service response->"+response.toString()); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Soap Method Error ->"+e.toString());  
    } 

    return data; 
} 
+0

を、それを使用することが、私はポストを更新uは..... –

+0

を行っているものといくつかの詳細を記入してくださいそれを参照してください – naresh

+0

@naresh私はあまりにも緯度と経度の二重の値をWSDLサービスに送り、Internal Service Fault Exceptionを取得する必要があります。これで私を助けてくれますか? –

答えて

5

正確なMarshalクラスにこの

よう

import org.ksoap2.serialization.Marshal; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import org.xmlpull.v1.XmlSerializer; 

import java.io.IOException; 


public class MarshalDouble implements Marshal { 
    public Object readInstance(XmlPullParser parser, String namespace, String name, 
           PropertyInfo expected) throws IOException, XmlPullParserException { 

     return Double.parseDouble(parser.nextText()); 
    } 


    public void register(SoapSerializationEnvelope cm) { 
     cm.addMapping(cm.xsd, "double", Double.class, this); 

    } 


    public void writeInstance(XmlSerializer writer, Object obj) throws IOException { 
     writer.text(obj.toString()); 
    } 
} 

the implementation 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.implicitTypes = true; 
envelope.dotNet = true; 
envelope.encodingStyle = SoapSerializationEnvelope.XSD; 
envelope.setOutputSoapObject(request); 

**MarshalDouble md = new MarshalDouble(); 
md.register(envelope);** 
+1

私はメッセージを残さずに私のポストを下落させたばかだと思ったのですか? – IamStalker

+0

これは私のために働いた、私はそれをアップヴォートする、尋ねる者はそれを受け入れる必要があります。 –

+0

@NemanjaKovačevićどうしてあなたはそれをアップアップしないのですか?) – IamStalker

関連する問題