Java 为Android打开带有额外标题的url浏览器

Java 为Android打开带有额外标题的url浏览器,java,android,uri,Java,Android,Uri,我有一个特定的要求,我必须从我的活动中在浏览器上触发一个url。我可以使用以下代码执行此操作: Intent browserIntent = new Intent( Intent.ACTION_VIEW, Uri.parse( pref.getString("webseal_sso_endpoint", "") + "?authorization_code=" + code + "&webseal-ip=" + websealIP ) ); activity

我有一个特定的要求,我必须从我的活动中在浏览器上触发一个url。我可以使用以下代码执行此操作:

Intent browserIntent = new Intent(
  Intent.ACTION_VIEW, Uri.parse(
    pref.getString("webseal_sso_endpoint", "") + "?authorization_code="
      + code + "&webseal-ip=" + websealIP
  )
);

activity.startActivity(browserIntent);
activity.finish();
现在,我想通过传递一个额外的头来调用这个webseal\u sso\u端点。说 (“用户”:“用户名”) 我如何实现这一点?
提前多谢

建议使用Uri类来创建Uri。有助于确保正确定义所有内容,并将正确的键与URI的值相关联

例如,您希望使用以下URL发送Web意图:

http://webseal_sso_endpoint?authorization_code=SomeCode&webseal-ip=WEBSEALIP
如果您有一个已定义的URL和要发送的参数,则应将其声明为静态最终字段,如下所示:

private final static String BASE_URL = "http://webseal_sso_endpoint";
private final static String AUTH_CODE = "authorization_code";
private final static String IP = "webseal-ip";  
private final static String USERNAME = "user";
Uri builtUri = Uri.parse(BASE_URL).buildUpon()
    .appendQueryParameter(AUTH_CODE, code)
    .appendQueryParameter(IP, websealIP)
    .build();
Uri builtUri = Uri.parse(BASE_URL).buildUpon()
    .appendQueryParameter(AUTH_CODE, code)
    .appendQueryParameter(IP, websealIP)
    .appendQueryParameter(USERNAME, user)
    .build();
然后您可以使用这些,如下所示:

private final static String BASE_URL = "http://webseal_sso_endpoint";
private final static String AUTH_CODE = "authorization_code";
private final static String IP = "webseal-ip";  
private final static String USERNAME = "user";
Uri builtUri = Uri.parse(BASE_URL).buildUpon()
    .appendQueryParameter(AUTH_CODE, code)
    .appendQueryParameter(IP, websealIP)
    .build();
Uri builtUri = Uri.parse(BASE_URL).buildUpon()
    .appendQueryParameter(AUTH_CODE, code)
    .appendQueryParameter(IP, websealIP)
    .appendQueryParameter(USERNAME, user)
    .build();
现在,如果要添加另一个参数,请添加另一个appendQueryParameter,如下所示:

private final static String BASE_URL = "http://webseal_sso_endpoint";
private final static String AUTH_CODE = "authorization_code";
private final static String IP = "webseal-ip";  
private final static String USERNAME = "user";
Uri builtUri = Uri.parse(BASE_URL).buildUpon()
    .appendQueryParameter(AUTH_CODE, code)
    .appendQueryParameter(IP, websealIP)
    .build();
Uri builtUri = Uri.parse(BASE_URL).buildUpon()
    .appendQueryParameter(AUTH_CODE, code)
    .appendQueryParameter(IP, websealIP)
    .appendQueryParameter(USERNAME, user)
    .build();
如果需要,您可以使用以下方法转换为URL:

URL url = new URL(builtUri.toString());
应该是这样的:

http://webseal_sso_endpoint?authorization_code=SomeCode&webseal-ip=WEBSEALIP&user=SomeUsersName

我介绍了如何添加标题。这是我的密码:

        Intent browserIntent = new Intent(
                Intent.ACTION_VIEW, Uri.parse(url));
        Bundle bundle = new Bundle(); 
        bundle.putString("iv-user", username); 
        browserIntent.putExtra(Browser.EXTRA_HEADERS, bundle);
        activity.startActivity(browserIntent);
        activity.finish();

仅仅在后面附加字符串是不起作用的。否则,我可以在Uri.parse(pref.getString(“webseal\u sso\u endpoint”,”)+“?authorization\u code=“+code+”&webseal ip=“+websealIP”)中添加更多属性。但无论如何谢谢你的回答,也许我误解了你的目标。您正在尝试在应用程序和服务器之间创建会话吗?还是别的什么?您能编辑原始问题并提供一个示例或说明吗?因此,我可以使用此结构将“授权”字符串添加到“标题”中。它是否适用于非Chromium浏览器?看见