Google 권장 사항에 따라 API 레벨 15 프로젝트에 HttpsURLConnection을 사용하고 있습니다.HttpsURLConnection server_name이 (가) 3g 이상입니다.
내 테스트 케이스는 매우 간단하다 : 나는 무선 랜을 통해 내 서버에 연결할 때
URL url = new URL(STATS);
HttpsURLConnection we = (HttpsURLConnection)url.openConnection();
InputStream in = new BufferedInputStream(we.getInputStream());
이 모든 것이 잘 작동합니다.
내가 3g 이상 내 서버에 연결
, 내 아파치 로그에 오류가 점점 오전 :Hostname 202.139.83.152 provided via SNI and hostname myserver.com provided via HTTP are different
이제 202.139.83.152 주소는 내 모바일 공급자 APN의 프록시 주소입니다.
핸드 셰이크 프로토콜/확장명 : server_name 필드에 wifi 요청에 대한 대상 호스트 이름 (myserver.com)이 있지만 3g 요청에 대한 APN 프록시 주소가 포함되어 있습니다.
은 이것이다 : 내가 코딩 한
- 뭔가 잘못 내 전화를 잘못 설정 한
- 뭔가 (삼성 갤럭시 S3) 내 서버 악
- 뭔가 잘못 설정 한
- 뭔가 내 이동 통신사 보내기
- Android 라이브러리의 버그
내 서버가이 가상 호스트에 전용 IP 주소를 사용하고 있습니다.
DefaultHttpClient의 간단한 하위 클래스를 사용하여 3g 이상을 성공적으로 만들 수 있지만 최소 API 레벨이 15이므로 '기본 설정'경로로 이동하기를 바랬습니다.
모든 제안은 매우 훌륭하게 접수 될 것입니다. 나는이 기본 작업을 작동 시키려고 너무 많은 시간을 보냈습니다.
이 프로젝트의 iPhone 개발을 담당하고있는 제 동료는 코드가 '상자 밖에서 작동하기'때문에 머리를 흔들었습니다.
APN을 사용하기 위해 프록시가 실제로 필요한지 확인해야합니다. 휴대 전화의 APN 구성을 확인하십시오. – Robert
로버트에게 감사드립니다. 와우. 나는 SIM을 처음으로 삽입했을 때 설정되어있는 '기본'APN을 사용하고 있었다 (나는 추정한다). 3g 이상의 다른 모든 인터넷 접속은 잘 작동했습니다. 프록시 설정이없는 대체 APN이 발견되었고 현재 코드가 작동합니다! 그러나 내 앱의 잠재적 인 사용자 측면에서 이것이 의미하는 바는 무엇입니까? 통신사가 프록시를 필요로한다면 (?), 그러면 무엇입니까? 내 코드에서 프록시를 우회하거나 보완 할 수있는 방법이 있습니까? – Horrendo
유럽에서는 사전 구성된 프록시가있는 공급자는 거의 없습니다. 프록시를 사용하는 경우에도 프록시는 일반적으로 아무 것도 변경하지 않는 HTTPS 통과를 사용해야합니다. 그러므로 나는이 상황이 매우 드물게 발생한다고 가정한다. – Robert