使用 url 打开浏览器,为 Android 添加额外的 headers
Open browser with a url with extra headers for Android
我有一个特定的要求,我必须从我的 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();
现在,我想通过传递额外的 header 来调用此 webseal_sso_endpoint。说
("user":"username")
我该如何实施?
非常感谢!
推荐的方法是使用 Uri class 来创建您的 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();
现在如果要添加另一个参数,请添加另一个 appendQueryParameter,如下所示:
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
我介绍了如何添加 header。这是我的代码:
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();
我有一个特定的要求,我必须从我的 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();
现在,我想通过传递额外的 header 来调用此 webseal_sso_endpoint。说 ("user":"username") 我该如何实施? 非常感谢!
推荐的方法是使用 Uri class 来创建您的 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();
现在如果要添加另一个参数,请添加另一个 appendQueryParameter,如下所示:
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
我介绍了如何添加 header。这是我的代码:
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();