簡體   English   中英

如何從 Domino 中的 URL 獲取字符串查詢參數

[英]How to get string query params from URL in Domino

一段時間后,我設法從一些 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 中的 auth 成功完成后看到它。

在此處輸入圖像描述

我得到以下 output:

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

我們還想知道如何在處理完成后將其從 URL 中刪除。 但到目前為止,我們至少需要得到它。

我們怎么能做到這一點?

提前致謝。

編輯:

顯然,代碼立即執行,無需等待系統 B 中的用戶授權。

例如,如果我們再次按下按鈕,我們將擁有marker參數。

所以我們需要一種不同的方法,我們應該定義標記並用它做一些事情

你看錯了結局。 有 2 個選項:從返回的響應中選擇標記 1 調用其他系統或將該代碼移動到您重定向到的頁面

如果單擊該按鈕,您將被重定向到另一個頁面。 因此,對標記的測試應該在 5 和 6 之間的回調步驟中進行。如果標記存在,請檢查 beforeRenderResponse 事件,然后您可以對此做出反應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM