【问题标题】:RestTemplate post listRestTemplate 帖子列表
【发布时间】: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


【解决方案1】:

您是否使用 AsyncTask 通过网络发送/接收您的请求?如果不是......你必须这样做! Android中如何使用AsyncTask的例子很多。

查看此链接AsyncTask Android example

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2018-12-01
    • 1970-01-01
    • 2017-05-11
    • 2021-03-14
    相关资源
    最近更新 更多