我在Android上有一个跟踪位置的应用。我将曲目包含在列表对象中。问题是,当我将列表发送到服务器时,它永远不会到达服务器,并且从我的日志中,不会显示错误。
代码段发送到服务器
public boolean sendTracks() throws IOException,SocketException,ConnectException{
String url = "http://192.168.0.180:9080/AddressProcessin/rest/tracks";
AllTracks alltracks = new AllTracks();
//get tracks from sqllite
alltracks.setTrackList(helper.GetTrackData());
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application","xml")));
HttpEntity<AllTracks> requestEntity = new HttpEntity<AllTracks>(alltracks,requestHeaders);
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<AllTracks> responseEntity =
restTemplate.exchange(url, HttpMethod.POST, requestEntity, AllTracks.class);
// get response body
AllTracks tracks = responseEntity.getBody();
return true;
}
应用类
public class AllTracks implements Serializable{
private static final long serialVersionUID = -2109883468783032832L;
//@ElementList(inline=true)
private List<Tracks> trackList;
public List<Tracks> getTrackList() {
return trackList;
}
public void setTrackList(List<Tracks> trackList) {
this.trackList = trackList;
}
public AllTracks() {
super();
// TODO Auto-generated constructor stub
}
}
跟踪课程
public class Tracks implements Serializable{
private static final long serialVersionUID = -6318006291038916587L;
//@Element(required = false)
@DatabaseField
private Date dateCaptured;
//@Element
@DatabaseField
private double longitude;
//@Element
@DatabaseField
private double latitude;
//@Element
@DatabaseField
private long userId;
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
// getters and setters
public Date getDateCaptured() {
return dateCaptured;
}
public void setDateCaptured(Date dateCaptured) {
this.dateCaptured = dateCaptured;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
// contructor
public Tracks(Date dateCaptured, long userId) {
super();
this.dateCaptured = dateCaptured;
this.userId = userId;
}
public Tracks(Date dateCaptured, double longitude, double latitude,
long userId) {
super();
this.dateCaptured = dateCaptured;
this.longitude = longitude;
this.latitude = latitude;
this.userId = userId;
}
public Tracks() {
super();
// TODO Auto-generated constructor stub
}
}
答案 0 :(得分:0)
您是否使用AsyncTask通过网络发送/接收您的请求?如果不是......你必须这样做!有很多关于如何在Android中使用AsyncTask的例子。