2016-11-03 47 views
0

我無法發佈請求到restfull服務。 它看起來像我的實體沒有正確轉換成json。 我收到一個400錯誤的請求響應。實體沒有發佈到寧靜服務

我懷疑它是導致問題的DateTimeRange對象列表 - 因爲我有一個非常類似的請求,但所有的pojos屬性都是字符串。

我是否需要註釋我的實體,以便爲列表和我的自定義DateTimeRange啓用到json的編組/

String actionUrl = buildUrl(myResftullUrlTest); 
Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class); 
Builder target = client.target(actionUrl).request(); 

CreateWebinarRequest createWebinarRequest = new CreateWebinarRequest(); 
createWebinarRequest.setDescription("Test1 desc"); 
createWebinarRequest.setSubject("Test1 subject") 
createWebinarRequest.setTimeZone("Europe/Dublin") 

List<DateTimeRange> dateTimeRangeParam = new ArrayList<DateTimeRange>(); 
DateTimeRange dateTimeRange = new DateTimeRange(); 
dateTimeRange.setStartTime("2016-11-03T08:34:12"); 
dateTimeRange.setEndTime("2016-11-03T09:34:12"); 
dateTimeRangeParam.add(dateTimeRange); 
createWebinarRequest.setTimes(dateTimeRangeParam); 

Response response = null; 
switch (goToTrainingRequestData.getRequestType()) { 
    case HTTP_POST : 
    response = target.buildPost(Entity.json(createWebinarRequest)).invoke(); 
    ... 
    } 
} 

CreateWebinarRequest:

public class CreateWebinarRequest implements Serializable { 
    private String subject = null; 
    private String description = null; 
    private List<DateTimeRange> times = new ArrayList<DateTimeRange>(); 
    private String timeZone = null; 

    public String getSubject() { 
    return subject; 
    } 

    public void setSubject(String subject) { 
    this.subject = subject; 
    } 

    public String getDescription() { 
    return description; 
    } 

    public void setDescription(String description) { 
    this.description = description; 
    } 

    public List<DateTimeRange> getTimes() { 
    return times; 
    } 

    public void setTimes(List<DateTimeRange> times) { 
    this.times = times; 
    } 

    public String getTimeZone() { 
    return timeZone; 
    } 

    public void setTimeZone(String timeZone) { 
    this.timeZone = timeZone; 
    } 
} 

DateTimeRange:

public class DateTimeRange { 
    private String startTime = null; 
    private String endTime = null; 

    public String getStartTime() { 
    return startTime; 
    } 

    public void setStartTime(String startTime) { 
    this.startTime = startTime; 
    } 

    public String getEndTime() { 
    return endTime; 
    } 

    public void setEndTime(String endTime) { 
    this.endTime = endTime; 
    } 
} 

回答

0

問題解決了球員和加爾斯! 沒有錯,任何數據編組,我從服務器與詳細的答覆:

String error = response.readEntity(String.class); 

它是代表我的一片噓聲噓!

{"errorCode":"RequestValidationError","description":"Request contains invalid parameters. See validationErrorCodes for specific errors.","Details":"times cannot be in past","incident":"6100682426566883853","validationErrorCodes":[{"code":"requestStartTimeInPast","description":"times cannot be in past"}]}