Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringREST获取带有日期字段的对象_Java_Spring_Jackson_Resttemplate - Fatal编程技术网

Java SpringREST获取带有日期字段的对象

Java SpringREST获取带有日期字段的对象,java,spring,jackson,resttemplate,Java,Spring,Jackson,Resttemplate,我正在与Jackson一起使用Spring RestTemplate 我试图通过GET请求将包装在对象中的参数列表发送给控制器,但只要Date字段存在,我就会继续收到400错误 这是我试图发送的对象: public class UserPmVpxpServiceDTO implements GenericDTO { private static final long serialVersionUID = 1L; private String codeCli; privat

我正在与Jackson一起使用Spring RestTemplate

我试图通过GET请求将包装在对象中的参数列表发送给控制器,但只要Date字段存在,我就会继续收到400错误

这是我试图发送的对象:

public class UserPmVpxpServiceDTO implements GenericDTO {
    private static final long serialVersionUID = 1L;
    private String codeCli;
    private String soapPassword;
    private Date expiryDate;
    private String soapServer;
    private Boolean status;

    public UserPmVpxpServiceDTO() {
    }

    @JsonCreator
    public UserPmVpxpServiceDTO(@JsonProperty("codeCli") final String codeCli,
                                @JsonProperty("soapPassword") final String soapPassword,
                                @JsonProperty("expiryDate") final Date expiryDate,
                                @JsonProperty("soapServer") final String soapServer,
                                @JsonProperty("status") final Boolean status) {
        this.codeCli = codeCli;
        this.soapPassword = soapPassword;
        this.expiryDate = expiryDate;
        this.soapServer = soapServer;
        this.status = status;
    }
    // getters and setters
}
这是我发出的请求

final UriComponentsBuilder path = UriComponentsBuilder.fromUriString(PMPCG_URL).path(UrlMap.PCG_GET_PAY_INFO);
path.queryParam("codeCli", userPmVpxpServiceDTO.getCodeCli());
path.queryParam("soapPassword", userPmVpxpServiceDTO.getSoapPassword());
path.queryParam("expiryDate", userPmVpxpServiceDTO.getExpiryDate());
path.queryParam("soapServer", userPmVpxpServiceDTO.getSoapServer());
path.queryParam("status", userPmVpxpServiceDTO.getStatus());
final URI uriPcg = path.buildAndExpand(id).toUri();
return restTemplate.getForObject(uriPcg.toString(), PayInfoDTO.class, userPmVpxpServiceDTO);
这是应该接收它的控制器

@RestController
public class VpsPayController {

    @RequestMapping(value = UrlMap.PCG_GET_PAY_INFO, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(HttpStatus.OK)
    public PayInfoDTO getPayInfo(final UserPmVpxpServiceDTO userPmVpxpServiceDTO, @PathVariable final String id) throws RemoteException, ServiceException {
        // my code
    }
}
如果我不发送expiryDate字段,它将完美地工作

这是一个生成的url不起作用的示例

/vpspay/get-payinfo/myid?codeCli=A465&soapPassword=myPass&expiryDate=Tue%2520Dec%252031%252000:00:00%2520CET%25202999&soapServer=https://111.111.11.11:7654&status=true
这反而有效

/vpspay/get-payinfo/myid?codeCli=A465&soapPassword=myPass&soapServer=https://111.111.11.11:7654&status=true

我试图将日期作为
Long
传递,但没有成功。

我认为,如果没有指定转换器,Spring最终将调用不推荐使用的日期构造函数,该构造函数将字符串作为参数,将输入字符串转换为日期对象


尝试以这种格式传递日期“11/12/2012 16:50 PM”

这将比使用日期来使用时间戳更干净。简单地说,它们是用数字表示的日期。
查看链接:并将日期发送到服务器,而不是发送一个长号码。

我在日期获取程序中添加了
@JsonFormat(shape=shape.STRING,pattern=“yyyy/MM/dd HH:MM”)
,并调用
/vpspay/get payinfo/myid?codeCli=A465&soapPassword=myPass&expireydate=2999/12/31%252000:00&soapServer=https://111.111.11.11:7654&status=true
,但结果与此相同,谢谢!尽管如此,我还是希望它能像POST请求一样为GET请求工作。