【问题标题】:A simple way to serialise a double?序列化双精度的简单方法?
【发布时间】:2011-09-22 10:45:25
【问题描述】:

我正在使用 ksoap,我想将我的 android 收集的位置信息发送到 ksoap。我想尝试避免创建一个 marshall 类等,有没有一种简单的方法可以序列化并将双精度发送到我的肥皂 xml?我试过使用 String.valueof 但是它会抛出一个错误,所以我认为我不能使用它。我将双精度传递给十进制类型的 xml 也是一个问题吗?

这是我要发送到的 xml 文件:

<s:element name="Customerlocation_AddNew">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Token" type="s:string" /> 
<s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string" /> 
<s:element minOccurs="1" maxOccurs="1" name="latitude" type="s:decimal" /> 
<s:element minOccurs="1" maxOccurs="1" name="longitude" type="s:decimal" /> 
<s:element minOccurs="1" maxOccurs="1" name="StatusId" type="s:int" /> 
</s:sequence>
</s:complexType>
</s:element>

到目前为止我的 java 代码:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // set
    request.addProperty("Username", username); // variable name, value. I
                                                // got
    request.addProperty("latitude", String.valueOf(Latitude));

    request.addProperty("longitude", String.valueOf(Longitude));
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11); // put all required data into a soap
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request); // prepare request
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
    httpTransport.debug = true;
    httpTransport.call(SOAP_ACTION, envelope); // send request

    System.out.println("HERE IS THE ENVELOPE "
            + envelope.getInfo("User", "Password"));
    SoapObject result = (SoapObject) envelope.getResponse(); // get
    System.out.println(result);

【问题讨论】:

    标签: android soap ksoap2


    【解决方案1】:

    为什么要避免使用 Marshal?!有一个实现 MarshalFloat 专门用于传输浮点数。如果你真的想不用 Marshal - 看看 MarshalFloat 的实现!在你的情况下,你应该使用这样的东西:

    request.addProperty("longitude", new BigDecimal(Longitude).toString())

    编辑: 记录您的请求\响应以找出问题所在:

     Log.d("test", "request: " + httpTransport .requestDump);
     Log.d("test", "response: " + httpTransport .responseDump);
    

    并尝试以下方法获取结果对象:

    SoapObject result = (SoapObject) envelope.bodyIn;
    

    希望这会有所帮助。祝你好运!

    【讨论】:

    • 我会实施它,稍后会回复您。
    • 似乎我已经这样做了,但是我在响应中收到了一个错误。我认为我的肥皂形式可能有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多