首页 > 解决方案 > 在 IBM Domino 中创建重定向的 HTTP 请求的方式

问题描述

我有一个按钮,它应该在执行 GET 请求后重定向用户。该按钮的代码如下:

 <xp:eventHandler event="onclick" submit="true"
    refreshMode="complete">
    <xp:this.action><![CDATA[#{javascript:

    var redirectUrl = 'https://oursystem.ru';
    var errorRedirectUrl = 'https://oursystem.ru/errorPage';

    var EGRZAuthObject = new ru.iteko.egrz.requestprocessors.EGRZAuthorization();

    EGRZAuthObject.initializeAuthProcess(redirectUrl, errorRedirectUrl);

    }]]></xp:this.action>
 </xp:eventHandler>

该方法如下所示:

public static void initializeAuthProcess(String redirectUrl, String apiRedirectUrl) throws ClientProtocolException, IOException 
{
    HttpClient instance = HttpClientBuilder.create()
    .setRedirectStrategy(new LaxRedirectStrategy()).build();
    String urlToGoTo = AuthURLs.ESIALoginURL(redirectUrl, apiRedirectUrl);
    System.out.println(urlToGoTo);
    HttpGet httpGet = new HttpGet(urlToGoTo);
    HttpResponse response1 = instance.execute(httpGet);
    System.out.println("resp code " + response1.getStatusLine());
}

这里会发生什么:

  1. 我们向 API 发送 GET 请求
  2. API 将我们重定向到另一个服务以进行授权

但是,它似乎不起作用。请求成功执行,但似乎没有重定向。(当我们按下按钮时)。从前面的代码我们得到

http://lk.egrz-test.i-teco.ru/fws/api/esia/login?errorRedirectUrl=https://oursystem.ru&redirectUrl=https://oursystem.ru/errorPage

resp code HTTP/1.1 200 OK

如何使页面重定向到资源?

提前致谢。

标签: javahttpredirectxpageslotus-domino

解决方案


您在这里处理 2 个不同的 http 请求。第一个浏览器 -> XPage 和一个 XPage -> 后端。没有代码作用于第二个请求的结果。您可能在 response1 对象中有一个 300 类 (301, 302) 类型的响应。您需要将其交还给浏览器。

使用上下文对象来做到这一点。


推荐阅读