永久移动POST请求

时间:2018-04-04 14:34:56

标签: http retrofit

我们的移动应用程序使用POST请求来检查其状态。我们需要将此服务迁移到新位置。我们使用新端点发布了新版本的移动应用程序。我计划发布将客户端重定向到新位置的服务更新。

@RequestMapping(value = "/url", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public void performHandShake(HttpServletResponse response) throws IOException {
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    response.setHeader("Location", service.getNewUrl());
}

我正在使用Postman和当前的Android实现测试此服务,并且它们都在HTTP错误405上失败 - 不允许使用方法。它们似乎都重定向到GET而不是请求POST。有没有正确的方法来重定向POST请求?我不想为新端点实现代理。

1 个答案:

答案 0 :(得分:2)

如果您不希望请求方法从POST更改为GET,请使用308代替301

  

6.4.2. 301 Moved Permanently

     

301(永久移动)状态代码表示目标   资源已被分配一个新的永久URI和任何未来   对此资源的引用应该使用其中一个附带的URI。 [...]

     

注意:由于历史原因,用户代理可以更改请求   从POSTGET的方法,用于后续请求。如果这   行为是不受欢迎的,307(临时重定向)状态代码   可以改为使用。

  

3. 308 Permanent Redirect

     

308(永久重定向)状态代码表示目标   资源已被分配一个新的永久URI和任何未来   对此资源的引用应该使用其中一个附带的URI。   具有链接编辑功能的客户端应该自动重新链接   对有效请求URI的引用   服务器发送的一个或多个新引用,如果可能的话。 [...]

     

注意:此状态代码类似于301(永久移动),   除了它不允许更改请求方法   POSTGET

有关详细信息,请参阅此answer