2012-12-03 59 views
0

我正在開發一個Android應用其中retreives位置和通過的Restlet其發送到一個的OData服務器[1]轉換原始Java數據類型的雙向的OData Edm.Double

在Android中的位置設置經緯度作爲雙。

double lat = location.getLatitude(); 

我的Restlet/OData服務:

public class LatLoc { 

    private double latitude; 

    public void setLatitude(double latitude) { 
    this.latitude = latitude; 
    } 
} 

的OData的$元數據:

<EntityType Name="locations"> 
    <Property Name="latitude" Type="Edm.Double"/> 

增加一個實體負責的方法:(GeoService是類HANDELING中的Restlet連接,實現方法addEntity())

public class LocTrans { 
    GeoService proxy = new GeoService(); 
    void sendLoc(Location location) throws Exception, Throwable { 
    LatLoc locSend = new LatLoc(); 
    locSend.setLatitude(location.getLatitude()); 
    System.out.println("Lat") 
    proxy.addEntity(locSend); 
    } 
} 

println示出了形式XX.XXXXXXXXXXX「正常」緯度

但是服務器接收像XX.XXX一個緯度(在後具有至少6個數字「」);所以只能在小數點後3位數字。

Restlet staits的文檔,即Edm.Double和原始數據類型double arer等效。

我的錯誤在哪裏,在發送到服務器時是否切斷了雙精度值?

[1] http://wiki.restlet.org/developers/172-restlet/267-restlet/271-restlet.html

回答

0

悲傷回答:我還沒有找到一個解決的Restlet問題。

我現在使用的是odata4j,這個工作。

void sendLocation(Location location, UUID uuid) throws Exception { 
    OEntity newLocation = c.createEntity(entitySet) 
    .properties(OProperties.guid("trackID", uuid.toString()), 
    OProperties.double_("latitude", location.getLatitude()), 
    .execute(); 

}