だから私は以下のコードに苦労しています。ファイルを提供している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