2014-07-14 1 views
2

myActivity 내에 WebView가있는 android 앱을 만듭니다.MS Exchange OWA의 HTML- 본문에서 '잘못된 요청'응답

공개 무효에서 onCreate (번들 savedInstanceState) { super.onCreate (savedInstanceState);

enter image description here

가 그럼 난 수동 내 도메인에서 사용자 이름과 암호를 입력 : 웹보기를 만들 때

// before setContentView 
    CookieSyncManager.createInstance(this); 
    CookieSyncManager.getInstance().startSync(); 
    CookieManager.getInstance().removeAllCookie(); 
    CookieManager.getInstance().setAcceptCookie(true); 

    setContentView(R.layout.browser); 

     webviewHTML = (WebView) findViewById(R.id.webviewHTML); 
     WebSettings webSettings = webviewHTML.getSettings(); 
     webSettings.setSupportZoom(true); 
     webSettings.setBuiltInZoomControls(true); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
     webSettings.setAppCacheEnabled(false); 
     webSettings.setSaveFormData(false); 
     webSettings.setSavePassword(false); 
     webSettings.setDefaultTextEncodingName("utf-8"); 
     webSettings.setDomStorageEnabled(true); 
     webSettings.setUserAgent(0); 
     webviewHTML.setWebViewClient(new myWebViewClient()); 
     webviewHTML.addJavascriptInterface(new myJavaScriptInterface(), getString(R.string.sAppName)); 
     webviewHTML.setOnLongClickListener(onWebViewLongClickListener); 

     webviewHTML.loadUrl("myaddress"); 
} 

나는 내 기업 마이크로 소프트 Exchange 2010의 OWA 'https://mail.mydomain.com/owa/'의 페이지를 엽니 다.

<head><head></head><body>Bad Request</body></head>

스크린 샷 :

enter image description here

하지만 어떤 브라우저 내에서이 페이지를 엽니 다 (크롬 는하지만 웹보기 안에 (응답 코드 200) 오류 메시지 페이지를 얻을) OWA 메일 페이지로 바로 입력하십시오 : enter image description here

Exchange 서버가 본문 내부에서 오류가있는 html 페이지를 반환하는 이유는 무엇입니까?

WebView 속성에 필요한 항목은 무엇입니까? 내가 브라우저 내부의 사용자 이름과 암호 팝업 (안 사이트)에 대한 PC 창에서 데스크톱 브라우저에서이 페이지를 열 때는 또한 :

추가

enter image description here

추가 솔루션 내 오류를 찾을 수 . WebView.myWebViewClient.onPageFinish에서 URL을 확인하고 URL이 시작 URL과 다릅니다. 이 URL을 수정하면 내 페이지가 올바르게 열립니다.

답변

3

변경 :

webSettings.setUserAgent(0); 

설명

webSettings.setUserAgentString("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"); 

를 들면 : 당신이 의도적으로 inexistent 브라우저로 자신합니다 (웹보기)을 식별 설정하고, 거래는 아마 좋아하지 않는다. 이 변경으로, 당신은 Firefox로 자신을 indentify 것입니다.

대답 확장 또한, 위해 그 인증 요청을 제거하는

, 당신은 웹보기에 WebViewClient를 확장하고 onReceivedHttpAuthRequest()를 구현하는 자신의 클래스를 추가 사용해야합니다.

예를 들어

:

webviewHTML = (WebView) findViewById(R.id.webviewHTML); 

    (...) 

    MPascualViewClient myNewClient = new MPascualViewClient(); 
    webviewHTML.setWebViewClient(myNewClient); 

    (...) 

    webviewHTML.loadUrl("myaddress"); 
} 

private class MPascualViewClient extends WebViewClient { 

    @Override 
    public void onReceivedHttpAuthRequest(WebView view, 
    HttpAuthHandler handler, String host, String realm) { 
     Log.d(this.getClass().getName(), "onReceivedHttpAuthRequest: " + host); 
     String user = "a username"; //get this string from wherever you want 
     String password = "a password"; //get this string from wherever you want 

     handler.proceed(user, password); 

    } 
} 
+0

감사합니다, 그러나 이것은 나를 위해 작동하지.또한 PC의 데스크탑 브라우저에서이 페이지를 여는 것에 대한 새로운 정보를 추가합니다. –

+0

질문의 확장 질문에 대한 답변을 더 추가했습니다 –

+0

이 코드를 구현하려고했지만 나에게 적합하지 않습니다. 당신은 저를 다른 방향으로 보내고 제 실수를 찾습니다. WebView onPageFinish에서 URL을 확인하고 시작 URL과 다른 URL을 확인합니다. 이 URL을 수정하면 내 페이지가 올바르게 열립니다. 고맙습니다! –

관련 문제