0
我在我的android應用程序中嘗試了很多使用HTTPS的方法。其實我在這裏的工作是想從服務器做一個api調用,並希望獲得authourisation。在Android中執行HTTPS
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
// Example send http request
final String url = "https://(serveraddress).../";
HttpPost httpPost = new HttpPost(url+ zAPIName);
byte[] byteArray = (zUserNameP.trim() + ":" + zPasswordP.trim()).getBytes();
String EncodedString = Base64.encodeBytes(byteArray);
httpPost.setHeader("Authorization", "Basic " + EncodedString);
httpPost.setEntity(zStringEntityL);
HttpResponse aHttpResponseL;
aHttpResponseL = client.execute(httpPost);
BufferedReader aBufferedReaderL = new BufferedReader(new InputStreamReader(
aHttpResponseL.getEntity().getContent()));
StringBuffer aStringBufferL = new StringBuffer("");
String zLineL = "";
String zLineSeparatorL = System.getProperty("line.separator");
while ((zLineL = aBufferedReaderL.readLine()) != null) {
aStringBufferL.append(zLineL + zLineSeparatorL);
}
aBufferedReaderL.close();
zResponserResultL = aStringBufferL.toString();
aResultL.StatusCode = aHttpResponseL.getStatusLine().getStatusCode();
ResposeMessage aMessageL = new ResposeMessage();
Gson gson = new Gson();
aMessageL = gson.fromJson(zResponserResultL, ResposeMessage.class);
aResultL.ResponseString = aMessageL.message;
在上面的代碼,如果我使用(HTTP) 「HTTP://(serveraddress)...... /」 其工作正常,但其不工作的(HTTPS)「https://開頭(serveraddress) ...... /」。我嘗試了我們網站上提供的所有解決方案。但沒有解決。請幫助我。
服務器確實*支持* HTTPS嗎?如果是這樣,那麼「不工作」是什麼意思?它會給出錯誤嗎?如果是這樣,請發佈完整的錯誤。 –
是的我的服務器支持HTTPs,並且我得到「null」的錯誤。 –
'null'不是錯誤,它是一個返回碼。檢查你的logcat,看看你是否得到任何錯誤。如果是這樣,請編輯您的問題以包含它們。 –