如何从Domino中的URL获取字符串查询参数

问题描述 投票:0回答:1

经过一段时间,我设法从某些API进行重定向。

但是,现在我面临另一个问题。

似乎似乎无法从URL获取查询参数。

该按钮看起来像这样:

 <xp:eventHandler event="onclick" submit="true"
    refreshMode="complete">
    <xp:this.action><![CDATA[#{javascript:
    var redirectUrl = context.getUrl().toString();
    var errorRedirectUrl = context.getUrl().toString();

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

    //auth which redirects
    EGRZAuthObject.initializeAuthProcess(redirectUrl, errorRedirectUrl);

    print("marker param is " + param.get("marker"));
    print("marker param is " + facesContext.getExternalContext().getRequest().getQueryString());
    print("url " + context.getUrl().toString());

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

重定向的方法如下:

public static void initializeAuthProcess(String redirectUrl, String apiRedirectUrl) throws ClientProtocolException, IOException 
{
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try
        {
            HttpContext context = new BasicHttpContext(); 
            String urlToGoTo = AuthURLs.ESIALoginURL(redirectUrl, apiRedirectUrl);
            HttpGet httpGet = new HttpGet(urlToGoTo);
            HttpResponse response1 = httpclient.execute(httpGet, context);

            HttpUriRequest currentReq = (HttpUriRequest) context.getAttribute( 
                     HttpCoreContext .HTTP_REQUEST);
            HttpHost currentHost = (HttpHost)  context.getAttribute( 
                        HttpCoreContext .HTTP_TARGET_HOST);
            String redirectURLEsia = (currentReq.getURI().isAbsolute()) ? currentReq.getURI().toString() : (currentHost.toURI() + currentReq.getURI());

            FacesContext fc = FacesContext.getCurrentInstance();
            ExternalContext externalContext = fc.getExternalContext();
            externalContext.redirect(redirectURLEsia);
        }
        finally
        {
            httpclient.close();
        }
}

发生了什么:

  1. 在浏览器中,用户通过按按钮初始化身份验证过程
  2. 然后initializeAuthProcess执行对系统A的请求
  3. [系统A将我们带到系统B,我们将用户重定向到那里]
  4. 用户在系统B中进行授权过程
  5. 系统B(在身份验证之后)将用户重定向到我们的系统
  6. 并且它在我们系统的URL中附加了一种称为marker的令牌

稍后,我们应该对标记做些事情...

问题是我们不知道如何获得标记。它始终为null或为空。但是,在浏览器中,成功完成系统B中的身份验证后,我们始终可以看到它。

enter image description here

我得到以下输出:

marker param is null
marker param is 
url https://oursystem.com/Nav2.xsp

我们还想知道如何在处理完成后将其从URL中删除。但是到目前为止,我们至少需要得到它。

我们该怎么做?

提前感谢。

编辑:

显然,在系统B中,无需waiting就可以立即执行代码而无需用户进行授权。

例如,如果我们再次按下按钮,我们将获得marker参数。

所以我们需要一种不同的方法,在那里我们应该定义标记并对其进行处理

xpages lotus-notes xpages-ssjs query-parameters facescontext
1个回答
0
投票

您看错了结局。有2个选项:从返回的response1中选择标记,调用其他系统,或将代码移到您重定向到的页面上

© www.soinside.com 2019 - 2024. All rights reserved.