내 안드로이드 앱을 변환하여 SSL을 사용하여 안드로이드 앱과 웹 서버간에 정보를 전송하려고하면 몇 가지 문제가 발생합니다. (SocketTimeOutException)android 앱에서 http에서 https로 변환 한 후 SocketTimeoutException이 발생했습니다.
인증 기관 (CA)에서 Positive SSL 인증서를 구입하고 올바르게 작동하도록 서버를 구성했습니다. 내 웹 브라우저에서 제대로 작동하는지 테스트했습니다.
이제 http 대신 https를 사용하도록 Android 개발자 앱을 수정하려고합니다.하지만 https를 처음 사용하기 때문에 자바 코드에서 구현해야하는 단계는 다소 혼란 스럽습니다.
현재 올바른 URL을 사용하도록 앱을 구성한 설정 페이지에서 작업하고 있습니다. 예를 들어 웹 사이트 url (http://www.mydomain.com)과 관련 페이지가 저장된 응용 프로그램 폴더 (myappfolder)에 2 개의 텍스트 필드가 있습니다.
이제
protected boolean validateConnectionSettings() {
String result = "";
boolean validated = false;
try {
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(tvWebsiteURLValue.getText() + File.separator + tvApplicationMiddlewareValue.getText() + File.separator + "validateurl.aspx");
URL url = new URL(urlBuilder.toString());
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
URLConnection urlConn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String inputLine;
while((inputLine = in.readLine()) != null){
result += inputLine;
}
in.close();
if(result.equals("exists")) {
validated = true;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, e.getMessage());
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, e.getMessage());
}
return validated;
}
나는 (HTTP를 변환 할 때 : 연결 변수 validateurl.aspx 페이지가 존재하는 경우 JSON 문자열을 반환하는 웹 페이지입니다 올바르게 구성되었는지에 연결하는 코드와 테스트 //www.mydomain .com) https를 사용하는 변수 위에서 언급 한 java.net.SocketTimeoutException을 얻습니다.
나는이 문제를 봤 나는 위의 코드에서 HttpsURLConnection는 대신의 URLConnection의 구현되어야한다고 보았다내가 다음에 따라 내 코드를 수정 한 때문에 : 그러나 나는 아직도받을
protected boolean validateConnectionSettings() {
String result = "";
boolean validated = false;
try {
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(tvWebsiteURLValue.getText() + File.separator + tvApplicationMiddlewareValue.getText() + File.separator + "validateurl.aspx");
URL url = new URL(urlBuilder.toString());
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
// URLConnection urlConn = url.openConnection();
HttpsURLConnection urlConn = (HttpsURLConnection)url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String inputLine;
while((inputLine = in.readLine()) != null){
result += inputLine;
}
in.close();
if(result.equals("exists")) {
validated = true;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, e.getMessage());
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, e.getMessage());
}
return validated;
}
java.net .SocketTimeoutException. 어떤 생각을 잘못하고 있니?
확인 유사한 문제가 다른 사람 -to-root-your-samsung-galaxy-ace-37385/그런 다음 gowloading하고 Google Play에서 앱 호스트 편집기를 사용합니다. 내 호스트 파일을 편집하고 웹 서버의 IP와 별칭을 추가 할 수있었습니다. 이것은 효과가 좋았고 이제 내부 네트워크에서 https를 사용하여 웹 서버에 연결할 수 있습니다. –