我正在使用HttpsURLConnection通过GET方法获取一些信息。我在Java中使用基本身份验证的代码和像这样的Trustmanager(HTTPS GET (SSL) with Android and self-signed server certificate)
private String sendHTTPrequest(String uri, HttpRequestMethods method,
String user, String password, int timeout, String body)
throws Exception {
if (sxtm != null) {
URL url = new URL(uri);
HttpsURLConnection httpsRequest = (HttpsURLConnection) url
.openConnection();
httpsRequest.setSSLSocketFactory(sxtm.getSSLInstance()
.getSocketFactory());
httpsRequest.setHostnameVerifier(sxtm.getHostInstance());
httpsRequest.setRequestMethod(""+method);
httpsRequest.setConnectTimeout(timeout);
httpsRequest.setDoInput(true);
httpsRequest.setDoOutput(true);
if (useDigist) {
// Currently not in use
setDigestAuthentication(httpsRequest, user, password);
} else {
String authString = user + ":" + password;
byte[] authEncBytes = Base64Coder.encode(authString
.getBytes());
String authStringEnc = new String(authEncBytes);
httpsRequest.addRequestProperty("Authorization", "Basic "
+ authStringEnc);
}
System.out.println(httpsRequest.getResponseCode());
if (httpsRequest.getContentType() != null
&& httpsRequest.getContentType().contains("xml")) {
DocumentBuilderFactory dfactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = dfactory.newDocumentBuilder();
lastXmlContent = builder.parse(httpsRequest.getInputStream());
return httpsRequest.getResponseMessage();
} else {
return "No XML found";
}
}
return "TrustManager is null";
}
Base64Coder是一个自己的类,可以在普通的Java JRE和Android之间切换(这可以在两个运行时同样的结果)
现在我的问题在于Java JRE一切正常,但在Android上我总是得到405代码!??!?!?
在Android应用程序中设置了Internet权限,并且使用Firefox
可以使用服务器