【发布时间】:2023-03-10 02:28:01
【问题描述】:
我在 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;
}
AllTracks 类
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
}
}
【问题讨论】:
-
可能想整理你的代码块,缺少两个的一半和三个的全部。欢迎来到 SO! :)
-
statusCode的响应是什么?你怎么现在请求从来没有到达服务器? -
你真的记录
sendTracks抛出的异常吗? -
@RC 代码没有通过这一行 ResponseEntity
responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, AllTracks.class); -
@njzk2 我确实记录了异常,但奇怪的是,没有抛出任何异常
标签: android resttemplate