我在Android应用程序上使用HTTPS调用REST服务.我已经有了这方面的工作代码,但现在我正在使用一个新安装的服务器来托管REST服务,我无法再建立连接.
这是一个例外:
javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x15b7768: Failure in SSL library, usually a protocol error
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0x402e5cc3:0x00000000)
Run Code Online (Sandbox Code Playgroud)
该应用程序使用Apache类与REST服务进行交互.即使使用接受任何类型证书的虚拟TrustManager,我也会收到此错误.
从Android Navigator调用REST服务时,连接成功建立并正常工作.
Android手机正在运行HTC最新的4.0.3 Android.
REST服务是Apache上托管的mod_perl应用程序,配置了SSL支持.
浏览https://github.com/android/platform_external_openssl/blob/ics-mr0/ssl/s23_clnt.c中的OpenSSL源代码除了低级问题之外没有给我任何提示.
有关如何进一步调试的任何建议吗?
我有一个WCF Rest服务项目设置服务JSON数据结构.我在接口文件中定义了一个合同,如:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "location/{id}")]
Location GetLocation(string id);
Run Code Online (Sandbox Code Playgroud)
现在,WebService需要像标准Web服务器一样返回多媒体(图像,PDF文档)文档.在WCF WebMessageFormat中的ResponseFormat唯一支持JSON或XML.如何在界面中定义方法以返回文件?
就像是:
[OperationContract]
[WebInvoke(Method="GET",
ResponseFormat = ?????
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "multimedia/{id}")]
???? GetMultimedia(string id);
Run Code Online (Sandbox Code Playgroud)
这样:wget http://example.com/multimedia/10返回id为10的PDF文档.