- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 delight-im/Android-AdvancedWebView 加载带有额外 header (用户身份验证 token )的 url,但 header 仅随初始请求一起发送,这是 webview 加载的第一个 url。但是当我单击该 url 中的另一个链接并尝试 POST 一些值时,标题不会传递。如何将其扩展到所有 GET 和 POST 请求,其中 url 与基本 url 相关联?请提及一种方法来做到这一点。这是我使用 webview 加载 url 的代码示例。
public class TableViewTest extends AppCompatActivity implements AdvancedWebView.Listener {
SharedPreferences pref;
boolean preventCaching = true;
private static final String URL = "my-url";
private AdvancedWebView mWebView;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_view_test);
pref = getSharedPreferences("LoginActivity", Context.MODE_PRIVATE);
final String acToken = pref.getString("token", "DEFAULT");
//used this method to add headers with every request, not working
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "Bearer " + acToken);
//mWebView.loadUrl(your url, headers);
//webView = (WebView) findViewById(R.id.webView1Id);
mWebView = (AdvancedWebView) findViewById(R.id.webview);
mWebView.setListener(this, this);
mWebView.setGeolocationEnabled(false);
mWebView.setMixedContentAllowed(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
//mWebView.setCookiesEnabled(true);
////////////////////////////////////////////////////////////////////////////////////////////
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.clearCache(true);
////////////////////////////////////////////////////////////////////////////////
//mWebView.setThirdPartyCookiesEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Toast.makeText(TableViewTest.this, "Finished loading", Toast.LENGTH_SHORT).show();
/////////////////////////////////////////////////////////////////////////////////////////////
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.clearCache(true);
////////////////////////////////////////////////////////////////////////
}
});
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
Toast.makeText(TableViewTest.this, title, Toast.LENGTH_SHORT).show();
}
});
//default method for adding header for initial method in AdvancedWebview
mWebView.addHttpHeader("Authorization", "Bearer " + acToken);
mWebView.loadUrl(URL, headers);
// webView.getSettings().setJavaScriptEnabled(true);
// webView.getSettings().setBuiltInZoomControls(true);
// webView.getSettings().setDomStorageEnabled(true);
// webView.getSettings().setUseWideViewPort(true);
}
@SuppressLint("NewApi")
@Override
protected void onResume() {
super.onResume();
mWebView.onResume();
// ...
}
@SuppressLint("NewApi")
@Override
protected void onPause() {
mWebView.onPause();
// ...
super.onPause();
}
@Override
protected void onDestroy() {
mWebView.onDestroy();
// ...
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
mWebView.onActivityResult(requestCode, resultCode, intent);
// ...
}
@Override
public void onBackPressed() {
if (!mWebView.onBackPressed()) { return; }
// ...
super.onBackPressed();
}
@Override
public void onPageStarted(String url, Bitmap favicon) {
mWebView.setVisibility(View.INVISIBLE);
}
@Override
public void onPageFinished(String url) {
mWebView.setVisibility(View.VISIBLE);
mWebView.clearCache(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
@Override
public void onPageError(int errorCode, String description, String failingUrl) {
Toast.makeText(TableViewTest.this, "onPageError(errorCode = "+errorCode+", description = "+description+", failingUrl = "+failingUrl+")", Toast.LENGTH_SHORT).show();
}
@Override
public void onDownloadRequested(String url, String suggestedFilename, String mimeType, long contentLength, String contentDisposition, String userAgent) {
Toast.makeText(TableViewTest.this, "onDownloadRequested(url = "+url+", suggestedFilename = "+suggestedFilename+", mimeType = "+mimeType+", contentLength = "+contentLength+", contentDisposition = "+contentDisposition+", userAgent = "+userAgent+")", Toast.LENGTH_LONG).show();
/*if (AdvancedWebView.handleDownload(this, url, suggestedFilename)) {
// download successfully handled
}
else {
// download couldn't be handled because user has disabled download manager app on the device
}*/
}
@Override
public void onExternalPageRequest(String url) {
Toast.makeText(TableViewTest.this, "onExternalPageRequest(url = "+url+")", Toast.LENGTH_SHORT).show();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
webView.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
webView.restoreState(savedInstanceState);
}
}
最佳答案
您可以添加以下代码:
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url, getExtraHeaders());
return true;
}
});
哪里getExtraHeaders()
返回 Map<String, String>
包含要在对此 URL 的 HTTP 请求中使用的附加 header 。
另外,请注意 addHttpHeader
现已修复并随每个 GET 请求发送自定义 header 。
关于android - Delight-im 高级 webview 在每个 GET 和 POST 请求中发送自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630491/
Skype 如何在 imo.im 和 im+ 服务中工作?有什么猜测吗? 我认为只有3种方式: 为服务器上的每个连接客户端运行多个 Skype 客户端副本 为服务器上的每个客户端从 SkypeKit
目前我正在开发 XMPP Google talk 聊天应用程序。该应用程序运行良好,通过分析来自特定聊天客户端的传入数据包(消息),我得到发件人的用户名(电子邮件)为“xxx@public.talk.
概要 给定一个带有可变参数模板构造函数的类型,它将参数转发给一个实现类,是否可以限制使用 SFINAE 转发的类型? 细节 首先,考虑带有通用引用的构造函数的非可变参数情况。这里可以禁用通过 SFIN
一组人气很高的很火的聊天表情包又来啦,热门又很有趣的聊天表情哦,这组表情包的聊天使用频率也是超级的高的哦。
我刚刚阅读了以下命令: taskkill /f /im something.exe 我读到了 /f强制关闭任务,但是 /im 做什么?做? 最佳答案 它告诉 taskkill下一个参数somethin
我曾遇到过有关此主题的不同问题,但是,没有一个能消除我对通知服务器客户端 IM 应用程序客户端的最佳方法的疑虑。 问题:整个问题是如何通知客户端应用程序更新。我已经见过以下方法: 客户端不断检查更新:
我正在尝试这段代码: im = Image.open("myimage") colors = im.getcolors() print colors 它返回“无”。所以我尝试了这个: im = Ima
我为打印网页编写代码。我正在使用 javascript 打印网页,代码如下 function print() { window.print(); } 我在 Button 的 onclien
我正在为 android 编写一个 jabber messenger,我想查看潜在聊天伙伴的电话联系人列表;) 无法弄清楚如何获取联系人的特定属性。获取显示名称不是问题,问题在于获取 IM 用户名。
我有这个 php 代码,其中有很多 mysql_query 和 or die ( mysql_error() ) 我如何减少 mysql_query 或 or die ( mysql_error()
我需要从我的应用程序连接到 IMS apn。当我尝试连接到 IMS apn 时,它会在我的手机上连接和断开连接,即使在 kitkat 上使用彩信也会发生同样的情况。有人可以帮我解决这个问题吗?这是代码
我正在创建一个社交网络网站,我需要一个 IM/聊天解决方案。 对话只是一对一的,用户只能与他们的 friend 聊天(即 Facebook 聊天 - 没有 channel ,没有房间......)。
我不是专业的程序员,我更多的是在业务方面,真的有一段时间没有编码了。问题是我正计划为手机开发一项新的 IM 服务,并且想知道在您看来,我应该在此过程中使用哪些最佳编程语言(聘请具有这些知识的人!)。
目前我只是每 3 秒查询一次服务器,看看是否有任何使用 NSURLRequest 等的新消息。如果有,它会将它们保存到数据库中,如果没有,则发送 NSNotificationCenter 通知,然后等
我正在尝试创建一个 IM 机器人,但我无法找到必要的资源。 更新 Imified 存在一个问题,使 gtalk 机器人无法在线显示(并且没有响应),它现在可以正常工作,所以我要关闭它。 这个tutor
我们有几个分布式开发人员在几个项目上一起工作。我们一直在使用 Skype 与所有开发人员进行聊天,它工作正常,除了一件事: 它真的会破坏我们复制并粘贴到聊天中的任何代码——尤其是 Python 中的空
我是 QuickBlox 聊天新手.. 尝试使用 Javascript SDK。但这总是抛出 Uncaught ReferenceError: QB is not defined 不知道我错过了什么。
我尝试在 C:\Users[name]\AppData\Roaming\Skype 中查找,发现一个名为“chatsync”的文件夹,其中有一些神秘的文件夹,其中的文件以 .dat 结尾。我几乎可以肯
2G 和 3G 已经在少数国家停用,其他国家也将很快停用。 LTE 模块的 VoLTE 功能对于能够通过 4G 进行调用而无需 2G/3G 回退是必需的。 native SMS 可以通过 2G/3G
我正在尝试cv2.imshow我的图像进行透视变换。 但是,我的图像很大,所以我看不到全貌: 如何解决这个问题? 下面是我的代码: import cv2 import os import numpy
我是一名优秀的程序员,十分优秀!