2014-12-17 3 views
1

코도바로 안드로이드 용 응용 프로그램을 만들었습니다.이 홈페이지는 로컬에 있으며 jQuery를 통해 웹 서비스를 호출합니다. 이 응용 프로그램에는 PDF를 볼 수있는 플러그인이 있습니다.안드로이드가 포함 된 코도 바의 관리 쿠키

이제 PDF를보고 싶지만 pdf가 서버에 로그온해야합니다. 로그인 프로세스가 jQuery로 끝나면 작동합니다. 서버에 로그온하면 로그인이 필요한 서비스를 호출 할 수 있습니다.

문제는 로그인이 필요한 PDF를 검색하려고하지만 http 세션이 jquery에서 cordova plugin (또는 webview)으로 공유되지 않는다는 것입니다. 서버에 대한 요청은 로그 사용자가 아닌 것과 같습니다.

PDF를 복구하려고 시도했지만 로그인이 필요하지 않으며 작동합니다.

사용되는 플러그인

http://call-me-early.blogspot.com.es/2013/03/android-webview-download-pdf-generated.html ¿ 어떤 아이디어를 기반으로?

우리는 jquery로 pdf를 검색하고 바이트 배열을 플러그인에 전달하려고 시도했지만 작동하지 않습니다. 또 다른 아이디어는 jquery의 쿠키 내용을 플러그인으로 이동하는 것이지만 우리는이 쿠키를 얻을 수 없습니다.

답변

2

수정. 우리가하는 일은 서버에서 세션을 생성하는 호출 (성공시)의 쿠키를 캡처하는 것입니다. 우리는 쿠키를 로컬에 보관하고 PDF 플러그인을 열어 보냅니다.이 플러그인은 네이티브 부분을 만드는 호출에 쿠키를 추가합니다.

JS 부 :

success: _.bind(function(data, textStatus, request){ 
    var header = request.getAllResponseHeaders(); 
    console.log("header: "+header); 
    var match = header.match(/(Set-Cookie|set-cookie|Set-cookie): (.+?);/); 
    console.log("match: "+match); 
    if(match!==undefined && match!==null && match.length>=3){ 
     console.log("CON COOKIE"); 
     console.log("COOKIE: "+match[2]); 
     localStorage.setItem("miCookie",match[2]); 
    } 
},this), 

플러그인 고유 전화

function callShowPdfPluginAndroid(param){ 
require(['utils'], function(utils) { 
    utils.showLoading(); 
    return cordova.exec(function(){utils.hideLoading();}, 
     function(error){utils.hideLoading();nativePluginErrorHandler(error);}, 
     "NativeBridgeAndroid", 
     "ShowPdf", 
     [param,localStorage.getItem("miCookie")]); 
}); 
} 

:

URL u = new URL(params[0]); 
HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
c.setRequestMethod("GET"); 
c.setRequestProperty("Cookie",cookie); 
c.setDoOutput(true); 
c.connect();