我正在开发一个 Android 应用程序,它检索位置并通过 Restlet [1] 将其发送到 OData 服务器
在 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 是处理 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);
}
}
以XX.XXXXXXXXXXXprintln
形式显示“正常”纬度(“。”后至少有 6 位数字)
但是服务器会收到像 XX.XXX 这样的纬度;所以只有小数点后3位。
Restlet 的文档表明 Edm.Double 和原始数据类型 double 是等效的。
我的错误在哪里,双值在发送到服务器时被切断了?
[1] http://wiki.restlet.org/developers/172-restlet/267-restlet/271-restlet.html