0

所以我正在努力使用下面的代码。我有提供文件的 java 和试图抓取文件并保存它的 php。我可以在浏览器中很好地从 servlet 下载文件。我可以使用 php 代码下载任何文件或网页(SSL 或非 SSL)。但是对于我的一生,我无法从这个 servlet 下载 php !!!我对 PHP 非常熟悉,但对 java 不太熟悉,如果有帮助,我就没有编写那个 servlet。但是,我可以编辑代码的任一端。谢谢!!

爪哇:

@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

0

旧帖子,但如果有人关心我只是一个白痴并且做了一个剪切和粘贴错误,所以我的卷曲选项有两个不同的变量标记:/

于 2013-09-10T19:14:41.753 回答
-1

如果 Java 端设置了标头,也许您的运气会更好Content-length

浏览器通常可以没有它,但在这里......?

于 2013-06-13T21:35:18.303 回答