- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Worklight 适配器将一些音频二进制数据发送到 https 休息服务,由于不支持发送二进制数据 ( found here ),我编写了自己的 Java 类来使用 wink 执行休息调用。
Java 代码肯定可以工作(它是一个简单的 wink 客户端,通过 https 进行用户/密码身份验证,经过测试并在独立的 Java 项目中工作),并且在 Worklight 中,我不必导入 wink 库,因为它们已经在服务器运行时中可用。当我在 Worklight 中使用相同的 Java 代码时,出现此异常:
[ERROR ] FWLSE0099E: An error occurred while invoking procedure [project CitizerCare]WatsonSpeechToText/recognizeSpeechFWLSE0100E: parameters: [project CitizerCare]
java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
FWLSE0101E: Caused by: [project CitizerCare]java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetorg.apache.wink.client.ClientRuntimeException: java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
深入到“由……引起”的链条,我得到:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我在线搜索,这似乎与 SSL 证书验证有关( problem and solution here ,它基本上解释了如何使用不受信任的证书创建 keystore )。我在 Worklight as explained here 中导入了我的 keystore (带有不受信任的证书) ,但仍然抛出异常。
鉴于 keystore 是我的问题的解决方案(也不确定),它是否也加载到运行 Java 适配器代码的 JVM 中?我不太理解这种行为,还考虑到使用普通的 HTTP 适配器我可以毫无问题地查询其他 https 休息服务!即使气馁,有办法在 Java 中禁用 SSL 证书验证吗?
这里调用的代码部分:
public class WatsonSTT {
private final static ClientConfig config = new ClientConfig();
static {
config.connectTimeout(60000*10).readTimeout(60000*10);
BasicAuthSecurityHandler basicAuthSecHandler = new BasicAuthSecurityHandler();
basicAuthSecHandler.setUserName(username);
basicAuthSecHandler.setPassword(password);
config.handlers(basicAuthSecHandler);
}
public static String query(String contentType, String base64data) throws JsonProcessingException, IOException {
DoubleSession session = createSession();
[...]
}
private static DoubleSession createSession() throws JsonProcessingException, IOException {
RestClient client = new RestClient(config);
Resource resource = client.resource(restAddress + "/sessions");
resource.accept(MediaType.APPLICATION_JSON);
resource.header("Accept", "application/json");
resource.contentType("application/json");
resource.header("Content-Length", "0");
ClientResponse response = resource.post(""); // Exception thrown
[...]
}
}
以及worklight.properties的修改:
ssl.keystore.path=conf/jssecacerts.keystore
ssl.keystore.type=jks
ssl.keystore.password=changeit
最佳答案
如果您需要从自定义 native java 代码使用 SSL 访问任何资源,您还需要实现对包含后端服务器可信证书的 keystore 的访问。在 worklight.properties
中配置的 keystore 仅由 WL.Server.invokeHttp(input)
的 worklight 适配器实现使用,不会加载到 JVM 中。但是您可以将后端信任证书导入到默认操作系统或 java keystore 中,以便该证书将由 JVM 加载并且可用于所有 java 应用程序。
关于Worklight 适配器上的 Java SSL "valid certification path",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838464/
这是我的作业 What does echo PATH $PATH \$PATH do? 我不知道它是如何工作的。 echo PATH打印“路径” $PATH创建一个“PATH”变量......也许?
我想弄清楚两者之间的区别 路径=路径+[节点1] 路径+=[节点1] path.append(node1) 我得到的是 path = path + [node1] 的正确路径,但不是其他两个。 def
我使用 Robot 框架在 Ride 中创建了一个测试用例。运行时出现错误。 我更新了python的路径。我更新了库和 Ride。我换了文件夹还是不行 *** Settings *** Documen
我尝试使用额外的功能自定义 pathlib.Path()。特别是,我真的很喜欢使用上下文管理器作为移入和移出目录的方法。我一直在使用它,但我似乎在让 Path() 与自定义上下文管理器一起工作时遇到错
编辑:基于 Ulf Rompe 的评论,重要的是使用“1”而不是“0”,否则您将破坏 sys.path . 我已经做 python 很长一段时间了(一年多),我总是很困惑为什么人们建议你使用 sys.
我有兴趣这样做的原因是因为我的路径中有一部分将保持不变,但我希望将其与其所有父部分一起删除。 所以如果我们说, some/unknown/path/foo/bar/baz 我想回去 bar/baz 但
在几个 SO 的问题中,有这些行可以访问代码的父目录,例如os.path.join(os.path.dirname(__file__)) returns nothing和 os.path.join(o
我已经在我的 Linux 中安装了 anaconda 来导入 python 包。 安装 anaconda 后,我无法在 python 中使用 anaconda,经过一番搜索后我发现输入此命令我能够使用
哪个更好用,为什么?我的意思是这两个命令在哪些方面不同以及如何不同?性能、可读性…… new FileInfo(path).Name 或 Path.GetFileName(path) 最佳答案 因为您
这不适用于某些设备。 在三星设备中,他们不允许使用下载管理器下载文件。 我已经在 list 中定义了权限并获得了运行时权限。 DownloadManager downloadManager = (Do
我想知道在这个例子中使用 Paths.get() 和 Path.resolve 有什么区别: public static void main(String[] args) { Path p1
目前我正在开发一个转换由 Inkscape 创建的 svg-paths 的应用程序。现在我不清楚关于绝对和相对路径组合的路径规范。规范是否说明了同时包含相对和绝对坐标的路径定义? 特别是关于绝对贝塞尔
我正在编写脚本,我需要在用户的 $PATH 上查找命令并获取该命令的完整路径。问题是我不知道用户的登录 shell 是什么,或者他们的 do 文件中可能有什么奇怪的东西。我将 bourne shell
Metalsmith 的文档对 path() 函数没有太多解释:#path(paths...): Resolve any amount of paths... relative to the work
我知道我可以通过 regedit 更改我的 wine PATH,但实际上我只需要为一次运行更改 PATH。 例如,我的软件名为frontend.exe,这取决于example/mylib.dll,我需
因此,绝对路径是一种到达某个文件或位置的方法,描述了它的完整路径、完整路径,并且它依赖于操作系统(Windows 和 Linux 的绝对路径,例如,不同)。另一方面,相对路径是从当前位置 ..(两个点
我对编程有点陌生(不是真的,但我仍在学习 - 我们不是吗?)。虽然我了解 Java 和 Python,并且了解 C、C++、JS、C#、HTML、CSS 等(并且我可以在终端中很好地导航),但我不熟悉
我对编程有点陌生(不是真的,但我仍在学习 - 我们不是吗?)。虽然我了解 Java 和 Python,并且了解 C、C++、JS、C#、HTML、CSS 等(并且我可以在终端中很好地导航),但我不熟悉
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
使用环境变量(如 PATH)作为 $PATH 或 ${PATH} 有什么区别? 最佳答案 在大多数情况下没有区别。唯一重要的是你是否想在扩展后包含尾随文本。例如,假设您的 PATH 包含字符串 FOO
我是一名优秀的程序员,十分优秀!