我正在尝试将文件上传到受SSL保护的Web服务,并且需要客户端证书(由内部CA签名).与上传文件相比,与Web服务的通信运行良好(下载文件,查询,运行命令和执行各种POST工作正常).
上传文件时,我得到一个SSLException(javax.net.ssl.SSLException),上面写着"写入错误:ssl = 0x5fe209c0:系统调用期间的I/O错误,同级连接重置".
我创建了一个重复的服务器并删除了SSL和客户端证书要求,并试图通过'vanilla'HTTP上传,并且它运行良好.
我尝试过使用setFixedLengthStreamingMode(int)和setChunkedStreamingMode(int)但没有成功.使用它们时,会从该write
方法抛出异常,并且在不使用它们时,会从调用中抛出相同的异常getResponseCode()
.
我找不到有关服务器中的错误的任何信息EventVwr
.
我们的其他客户端(iOS客户端)能够在那里上传文件,因此它必须是我所做的 - 但我无法弄清楚是什么.
我不确定如何进一步调试此问题.
请帮忙.
我们做了很多调试工作,发现:
在你的评论中读到之后,现在我让Fiddler玩得很好(感谢这个问题).Fiddler得到了这个文件,但没有成功发送它.请求(原始)看起来像:
POST https://192.168.2.2/rest/transfer/strong/Upload/Full?Path=%5C20140807_113255_20.jpg&Root=2 HTTP/1.1
SessionToken: 1234 // We use this for session management
FileMetadata: {"FileSize":"1315496","FileName":"GrumpyCat.jpg"}
Connection: Keep-Alive
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; GT-N7100 Build/JRO03C)
Host: 192.168.2.2
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Content-Length: 1315496
;odiao;awriorijgoeijoeirj;oedfrvgerg... // The image
Run Code Online (Sandbox Code Playgroud)
Fiddler的回应(也是RAW)是:
HTTP/1.1 504 Fiddler - Send Failure
Date: Wed, 20 Aug 2014 …
Run Code Online (Sandbox Code Playgroud) wpf在Windows 7上提供的焦点视觉提示是一条虚线,如下所示:
现在,我该如何改变它的外观?我怎样才能控制它的外观?
谢谢!
我正在使用UIL(由Nosotra)下载服务器渲染的图像,并且服务器最多需要50秒来创建每个图像.服务器的超时设置为15秒,因此我们创建了一个在ImageDownloader.getStream()
方法中实现的轮询机制.下载后,图像将显示在ViewPager中(android.support.v4.view.ViewPager
就像样本一样).
当用户导航到其他页面时,我希望在不下载文件的情况下停止轮询,但似乎没有" 好 "方法来打破下载流程.
getStream伪代码
1. Parse custom-style URI ("asdf://mypng|123455678945643563245");
2. Make a real world URL from it.
3. Poll the server for the image url (causes the server to render - could take up to 1m30s).
4. Get the stream from the URL, return the stream to caller.
Example Code: InputStream is = (InputStream) url.getContent();
Run Code Online (Sandbox Code Playgroud)
到目前为止尝试了什么
null
从我的getStream
方法返回会导致NullPointerException
抛出,所以它与抛出异常基本相同.
抛出异常时,图像会停止,但是:
OutOfMemoryError
,所以我在屏幕上显示错误.我不应该得到错误.我已经尝试过这个SO问题的清单 …我正在尝试为我们的 Android 应用程序创建一个基于 Jenkins 的构建服务器。我正在使用装有最新 Jenkins (1.638) 的 CentOS 机器(虚拟),但无法成功完成构建。
构建失败,因为它无法自动安装 JDK(在机器上,有 OpenJDK 24.91-b01 a-la 1.7.0_91)
java.io.IOException: JDK data is empty.
at hudson.tools.JDKInstaller.locate(JDKInstaller.java:418)
at hudson.tools.JDKInstaller.performInstallation(JDKInstaller.java:134)
at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:68)
at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:108)
at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
at hudson.model.JDK.forNode(JDK.java:143)
at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:358)
at hudson.model.Run.getEnvironment(Run.java:2232)
at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:941)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1036)
at hudson.scm.SCM.checkout(SCM.java:485)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1275)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:532)
at hudson.model.Run.execute(Run.java:1741)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
在Manage Jenkins
屏幕上,我没有看到 JDK(和其他自动安装程序:ANT、Maven、Gradle 等)的选择框
所以:
目标
我正在努力实现与客户证书的沟通.
步骤1:创建PKCS#10请求(CSR)并将其提供给我的服务器进行签名.服务器联系人将CSR传递给CA,CA对其进行签名,并返回PKCS#7(带有签名的PKCS#10和CA的证书).
第2步:创建PKCS#12,将其安全地存储在Android设备上
步骤3:创建SSL连接,以便根据证书对客户端进行身份验证.
现在,第1步使用SpongyCastle 1.50.0.0完美运行,但是我坚持其他步骤......我目前正在获得SSL握手异常,但我觉得我应该重新思考我的实现.
这个问题
有谁知道如何实现流程?如何创建和存储客户端证书与Android的SSLContext一起使用所需的一切,以及如何创建这样的SSLContext?
到目前为止我尝试了什么
我的第一次尝试是使用KeyChain,但我们希望避免那里描述的用户交互.我的第二次尝试是遵循Rich Freedman的步骤,但我不知道如何从PKCS#7和私钥创建PKCS#12.对于持久性,我去了这个帖子,但(一)这是C#,(B),它是未加密和(c)我认为,Android系统平台拥有更好的按键持久性机制,一个是我还一无所知.最后,这段代码(用于从PEM和PKCS#7创建PKCS12)不起作用,因为我不知道如何获得CER文件以及它需要的其他东西.
谢谢!