- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
一些背景知识,我正在尝试创建一个 URL 流处理程序,以便我可以跟踪在我的 javafx 应用程序中我的 webview 上有多少 Activity 连接。本质上,我在 WebView 中运行 AngularJs 应用程序,我想知道它何时完成。我不能触摸网站代码,所以添加一个 js 通知程序不在桌面上。所以,无论我把什么放在一起,设置总是出现“协议(protocol)不支持输入”的错误。我试图用只返回 false 的方法覆盖“getDoInput”,但我仍然收到错误。有什么想法吗?
这是接近我正在做的事情:
public class MyUrlStreamHandlerFactory implements URLStreamHandlerFactory {
public URLStreamHandler createURLStreamHandler(String protocol) {
if (protocol.equalsIgnoreCase("http") || protocol.equalsIgnoreCase("https")) {
return new URLStreamHandler() {
@Override
protected URLConnection openConnection(URL url) throws IOException {
return new HttpURLConnection(url) {
@Override
public void connect() throws IOException {
}
@Override
public void disconnect() {
}
@Override
public boolean usingProxy() {
return false;
}
@Override
public boolean getDoInput() {
return false;
}
};
}
};
}
return null;
}
}
我正在安装它:
URL.setURLStreamHandlerFactory(new MyUrlStreamHandlerFactory());
最佳答案
我理解你想要完成的事情,但是我认为这是错误的方法。
From: Java Network Programming by Elliotte Rusty Harold
Only abstract
URLConnection
classes are present in thejava.net
package. The concrete subclasses are hidden inside thesun.net
package hierarchy. It is rare to instantiateURLConnection
objects directly in your source code; instead, the runtime environment creates these objects as needed, depending on the protocol in use. The class (which is unknown at compile time) is then instantiated using theforName()
andnewInstance()
methods of thejava.lang.Class
class.For example, the
connect()
method ofsun.net.www.protocol.http.HttpURLConnection
creates asun.net.www.http.HttpClient
object, which is responsible for connecting to the server.
因此,除非您想编写自己的 http 协议(protocol)处理程序和 HttpClient,否则我建议探索其他途径。
我能找到的唯一抛出 UnknownServiceException
消息为 "protocol doesn't support input"
的方法是:
/**
* Returns an input stream that reads from this open connection.
*
* @return an input stream that reads from this open connection.
* @exception IOException if an I/O error occurs while
* creating the input stream.
* @exception UnknownServiceException if the protocol does not support
* input.
*/
public InputStream getInputStream() throws IOException {
throw new UnknownServiceException("protocol doesn't support input");
}
覆盖 getDoInput
您不应覆盖 getDoInput
以仅返回 false。相反,您应该使用 setDoInput(false)
。但是,您不想将 doInput
设置为 false。你总是想读一些东西,例如响应代码。
关于java - 为 URLStreamHandlerFactory 创建 HttpURLConnection,出现错误 : protocol doesn't support input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993995/
我收到多行错误,指出它有重复的类 Duplicate class android.support.v4.accessibilityservice.AccessibilityServiceInfoCom
我的项目昨天运行良好,今天却出现以下错误。请帮忙。 出了什么问题:无法解析配置“:app:debugCompileClasspath”的所有文件。 Could not find support-v4.
错误:配置项目“:app”时出现问题。 Could not find support-v4.jar (com.android.support:support-v4:24.0.0). Searched
我正在使用 react-native-webrtc 运行示例应用程序模块。我正在尝试在 android 中运行该应用程序,但出现这样的错误... * What went wrong: A probl
错误:配置项目“:app”时出现问题。 Could not find support-v4.jar (com.android.support:support-v4:24.0.0). Searched
我克隆了我的项目并使用 Android studio 打开,但构建失败并出现以下错误并且同一个项目在其他项目上运行良好。 出了什么问题:无法解析配置“:app:flavorUnsignedReleas
我正在运行示例应用程序......我正在使用 this模块.....但是我收到这样的错误... FAILURE: Build failed with an exception. * What went
我有一个 Ionic 项目,在升级到 OSx Mojave 后,出于某种原因不再构建。 该项目基于 Ionic 3 构建。 我有 Cordova CLI 7.0.0 当我运行时 ionic cordo
我有一个 Ionic 项目,在升级到 OSx Mojave 后,出于某种原因不再构建。 该项目基于 Ionic 3 构建。 我有 Cordova CLI 7.0.0 当我运行时 ionic cordo
添加 Android 平台(ionic cordova platform add android)后,我构建了我的 Ionic 项目(ionic cordova build android),但出现错
这个问题在这里已经有了答案: Manifest merger failed : Attribute application@appComponentFactory - Androidx (14 个答
关于我的 Gradle 文件中的以下“complie”: dependencies { compile 'com.android.support:support-v4:25.3.1' }
有些困惑。 我想更频繁地使用@supports 但是...我不关心浏览器如何看待它。希望您能说清楚,如果可以的话谢谢您。 如果浏览器本身不理解@supports,它如何计算@support 'not'
我刚刚升级到 Dart 2 和最新版本的 Flutter,现在我无法构建我的应用程序。我在互联网上环顾四周,但仍然不明白为什么会发生这种情况。 我得到的错误是: FAILURE: Build fail
我正在学习 Firebase,但由于以下错误而陷入困境: Error:Failed to resolve: com.android.support:customtabs:25.4.0 Error:Fa
我在构建本周时出于某种原因尝试使用Cordova进行项目时遇到问题: cordova build android gradle获取com.android.support:support alpha而不
对应的androidx是什么com.android.support:support-compat 的图书馆实现push notifications ? 他们说here它是 androidx 的一部分,
我正在尝试为我的应用设置插桩单元测试。并且我已根据以下开发者站点链接添加了依赖项。 https://developer.android.com/training/testing/unit-testin
当我想使用 Proguard 规则生成签名的 APK(发布)时,我收到了以下错误消息: Cannot find a version of 'com.android.support:support-an
这个问题在这里已经有了答案: Failed to resolve: com.android.support:appcompat-v7:26.0.0 (14 个答案) Failed to resolv
我是一名优秀的程序员,十分优秀!