当前位置: 首页 > 知识库问答 >
问题:

使用来自HTTP POST的响应进行Spring MVC重定向

符渊
2023-03-14

我需要使用Spring MVC重定向到一个外部服务,使用一个带有构建的对象的POST。

@RequestMapping(method = RequestMethod.GET, value = "/handoff")
public HttpEntity dispatch(HttpServletRequest request,
  @RequestParam(value = "referralURL", required = false) String referralUrl) {

    String redirectURL = "http://desinationURL.com/post";

    HttpClientHelper httpHelper = new HttpClientHelper();
    HttpEntity entity = httpHelper.httpClientPost(redirectURL, null);

    // Redirect
    return entity;
}

HttpClientHelper.java

public HttpEntity httpClientPost(String url, List<NameValuePair> params) throws ClientProtocolException, IOException {

    HttpClient httpclient = HttpClients.createDefault();
    HttpPost httppost = new HttpPost(url);

    // Request parameters and other properties.
    if (params != null) {
        httppost.setEntity(new UrlEncodedFormEntity(params, Constants.UTF_8_ENCODING));
    }

    // Execute and get the response.
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();

    return entity;

}

我可以看到目标服务正被POST请求成功命中,我需要从MCV控制器读取响应的输出作为返回值,因为它当前只返回一个404。

共有1个答案

帅煌
2023-03-14

无法将浏览器重定向到POST请求的响应。您所能做的就是将调用的结果发回外部URL。或者以某种方式处理响应,然后转发到应用程序中显示有关响应的某些信息的其他页面。

例如。

@RequestMapping(method = RequestMethod.GET, value = "/handoff")
public void dispatch(HttpServletRequest request,
  @RequestParam(value = "referralURL", required = false) String referralUrl, HttpServletResponse response) {

    String redirectURL = "http://desinationURL.com/post";

    HttpClientHelper httpHelper = new HttpClientHelper();
    HttpEntity entity = httpHelper.httpClientPost(redirectURL, null);

    //streams the raw response
    entity.writeTo(response.getOutputSStream());
}
 类似资料:
  • 问题内容: 我是Go的新手,我正在尝试构建一个简单的HTTP服务器。但是我在JSON响应中遇到了一些问题。我编写了以下代码,然后尝试邮递员发送一些JSON数据。但是,我的邮递员总是得到空响应,而is 。然后,我在http://www.alexedwards.net/blog/golang-response- snippets#json中 检查了一个示例。我复制并粘贴了示例,并且效果很好。但是我看不

  • 问题内容: 我正在尝试在Spring MVC应用程序中实现RESTful URL。除了处理表单提交之外,一切都很好。我需要重定向回原始表单或“成功”页面。 但是,正如我在Spring文档中所阅读的那样,如果您重定向了任何参数,则会将其放入url。那对我不起作用。解决此问题的最优雅方式是什么? 问题答案: http://jira.springframework.org/browse/SPR-6464

  • 基于我之前的问题,我现在需要在响应中添加一个标题。 根据留档,我可以简单地将标头和另一个属性添加到对象。 当我对此进行测试时,它似乎没有携带标头值。 根据这篇文章,为重定向请求设置标题是不可能的。所以除了重定向,也许我应该试试别的? 有什么想法吗?

  • 在SpringMVC项目中,客户机发送一个带有序列化对象的请求,客户机本身是一个小程序,所以它不希望收到一个web页面作为响应,而是一个带有字符串对象的响应,该响应将告诉他这是成功还是失败。那么解决方案是什么呢?我想在@Controller中使用返回void的方法,或者返回不存在页面的方法?(在这两种情况下,我还想知道是否有回复给客户)

  • 问题内容: 是否可以在PHP中处理来自AJAX请求的响应?我不是一个真正的JS开发人员,所以我正在用这个开发人员。 我有点黑了: }); 该功能似乎可以正常运行,它会向我发出有关正确数据的警报。 我需要能够将此输出给用户,以便可读。我发现很多指南都描述了替换数据,但就目前而言,直到选择child_id之前,没有数据。.然后我希望它以可读的方式显示上述数据。 我不知道如何开始使用视图文件(php)中

  • 问题内容: 我有一个通过Nginx和uWsgi托管的django应用。在某个非常简单的请求中,我得到了GET和POST不同的行为,事实并非如此。 uWsgi守护程序日志: Nginx访问日志: Nginx错误日志: 本质上,如果我使用POST,Nginx会丢失响应,如果使用GET则不会。 有人知道吗? 问题答案: 经过进一步研究的幸运发现(http://answerpot.com/showthre