0

最初に基本的なAUTHを持つサーバーAからPDFをダウンロードしようとしています。次に、PDFがサーバーにダウンロードされたら、ブラウザプラグインが読み取ることができる新しいウィンドウ/タブでユーザーに表示します。ユーザー名とパスワードをプレーンテキストで送信しないように、これを実行しようとしています。最初にサーバーにダウンロードすると、ユーザー名とパスワードを非表示にして、ファイルをユーザーに表示することができると考えました。これまでのところ、動作しない私のコードは次のとおりです。何も起こりません。

//Get URL For The PDF File
    StringBuilder parameters = new StringBuilder();
    parameters.append("api=getDocument");
    parameters.append("&documentType=report");
    parameters.append("&documentID=").append(selectedReport);

    URL url;
    HttpURLConnection connection = null;
    try {
        //Create connection
        url = new URL(apiURL);

        //Create connection
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        BASE64Encoder enc = new sun.misc.BASE64Encoder();
        String userpassword = userName + ":" + password;
        String encodedAuthorization = enc.encode(userpassword.getBytes());
        connection.setRequestProperty("Authorization", "Basic " + encodedAuthorization);
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connection.setRequestProperty("Content-Length", "" + Integer.toString(URLEncoder.encode(parameters.toString(), "UTF-8").getBytes().length));
        connection.setRequestProperty("Content-Language", "en-US");
        connection.setUseCaches(false);
        connection.setDoInput(true);
        connection.setDoOutput(true);

        //Send request
        DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
        wr.writeBytes(parameters.toString());
        wr.flush();
        wr.close();

        //Get Response  
        InputStream is = connection.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));

        //Convert to Byte Array
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int nRead;
        byte[] data = new byte[16384];
        while ((nRead = is.read(data, 0, data.length)) != -1) {
            buffer.write(data, 0, nRead);
        }
        buffer.flush();

        // Prepare.
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
        BufferedOutputStream output = null;
        int DEFAULT_BUFFER_SIZE = 10240;

        // Init servlet response.            
        response.reset();
        response.setHeader("Content-Type", "application/pdf");
        response.setHeader("Content-Disposition", "inline; filename=\"" + "report.pdf" + "\"");
        output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);

        // Write file contents to response.
        byte[] buff = buffer.toByteArray();
        int length;
        while ((length = is.read(buff)) > 0) {
            output.write(buff, 0, length);
        }

        // Finalize task.
        output.flush();

        //Keep The Below         
        rd.close();

        facesContext.responseComplete();

    } catch (Exception e) {
        e.printStackTrace();

    } finally {
        if (connection != null) {
            connection.disconnect();
        }
    }
4

0 に答える 0