0

だから私は以下のコードに苦労しています。ファイルを提供しているJavaと、ファイルを取得して保存しようとしているphpがあります。ブラウザで問題なくサーブレットからファイルをダウンロードできます。PHP コードを使用して、任意のファイルまたは Web ページ (SSL の有無にかかわらず) をダウンロードできます。しかし、私の人生のために、このサーブレットからphpをダウンロードすることはできません!!! 私はPHPにはかなり精通していますが、Javaにはあまり詳しくありません。役立つ場合は、そのサーブレットを作成しませんでした。ただし、コードの両端を編集できます。ありがとうございました!!

ジャワ:

@Override
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
    try {
        String fileName = "/tmp/DongleUpdate.jar";
        File f = new File( "/tmp/DongleUpdate.jar" );
        response.setContentType( "application/zip" );
        response.setHeader( "Content-Disposition", "attachment;filename=\"" +
                fileName + "\"" );
        byte[] arBytes = new byte[( int ) f.length()];
        FileInputStream is = new FileInputStream( f );
        is.read( arBytes );
        ServletOutputStream op = response.getOutputStream();
        op.write( arBytes );
        op.flush();

    } catch( IOException ioe ) {
        ioe.printStackTrace();
    }
}

PHP:

$ch = curl_init($file);
curl_setopt($ch, CONNECTTIMEOUT, 10);
curl_setopt($ch, TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curl, CURLOPT_GET, true);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($cURL,CURLOPT_HTTPHEADER,array(
    "Accept: application/zip"
));
$rawdata=curl_exec($ch);
curl_close ($ch);

$fp = fopen($saveloc,'w');
fwrite($fp, $rawdata);
fclose($fp);

ここで考えられるすべてのバージョンのcurlオプションを試しました。スタックオーバーフローは初めてですが、実際に使用しているリンクが役立つ場合は誰かにメッセージを送ることができます。また、フィドラーからのリンクへの生の接続出力は次のとおりです。

CONNECT XXXX:8443 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Connection: keep-alive
Connection: keep-alive
Host: XXXX

A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Version: 3.1 (TLS/1.0)
Random: XXXX
SessionID: empty
Extensions: 
elliptic_curves XXXX
ec_point_formats    01 00
SessionTicket TLS   empty
NextProtocolNegotiation empty
Ciphers: 
[00FF]  TLS_EMPTY_RENEGOTIATION_INFO_SCSV
[C00A]  TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
[C014]  TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA
[0088]  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
[0087]  TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
[0039]  TLS_DHE_RSA_WITH_AES_256_SHA
[0038]  TLS_DHE_DSS_WITH_AES_256_SHA
[C00F]  TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
[C005]  TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
[0084]  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
[0035]  TLS_RSA_AES_256_SHA
[C007]  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
[C009]  TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
[C011]  TLS_ECDHE_RSA_WITH_RC4_128_SHA
[C013]  TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA
[0045]  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
[0044]  TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
[0033]  TLS_DHE_RSA_WITH_AES_128_SHA
[0032]  TLS_DHE_DSS_WITH_AES_128_SHA
[C00C]  TLS_ECDH_RSA_WITH_RC4_128_SHA
[C00E]  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
[C002]  TLS_ECDH_ECDSA_WITH_RC4_128_SHA
[C004]  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
[0096]  TLS_RSA_WITH_SEED_CBC_SHA
[0041]  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
[0005]  SSL_RSA_WITH_RC4_128_SHA
[0004]  SSL_RSA_WITH_RC4_128_MD5
[002F]  TLS_RSA_AES_128_SHA
[C008]  TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
[C012]  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
[0016]  SSL_DHE_RSA_WITH_3DES_EDE_SHA
[0013]  SSL_DHE_DSS_WITH_3DES_EDE_SHA
[C00D]  TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
[C003]  TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
[FEFF]  SSL_RSA_FIPS_WITH_3DES_EDE_SHA
[000A]  SSL_RSA_WITH_3DES_EDE_SHA

圧縮: [00] NO_COMPRESSION

4

2 に答える 2