Grails 1.3.7octets en streaming de contrôleur, navigateur Android, téléchargement échoue
J'ai un code qui ressemble à ceci ...
response.setHeader("Content-disposition", "attachment; filename=${fileName}")
response.contentType = download.contentType
response.contentLength = file.length()
response.outputStream << file.getBytes()
Sur le bureau et sur l'iPad, les téléchargements fonctionnent ça va. Mais sur les appareils Android, il me donne juste "Unknown myserver.com En cours". Et puis échoue finalement. Un couple de points ...
- Ce dans leur environnement local, la mise en scène, et sur les serveurs de production
- Test sans SSL, tout fonctionne bien.
- Lorsque je tente le téléchargement dans le navigateur Dolphin I obtenir les mêmes résultats avec un bit ajouté de texte « En attente de connexion de données »
Mise à jour # 2: Stacktrace que ne se produit que lors du téléchargement d'un appareil Android:
Stacktrace follows:
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:297)
at com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:286)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:743)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:731)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at com.wbr.consumer.ProductController$_closure1_closure2.doCall(ProductController.groovy:30)
at com.wbr.consumer.ProductController$_closure1.doCall(ProductController.groovy:28)
at com.wbr.consumer.ProductController$_closure1.doCall(ProductController.groovy)
at java.lang.Thread.run(Thread.java:680)
1. Tout le reste de mon site SSL fonctionne. Juste pas les téléchargements. Je ne comprends pas ce que vous voulez dire par "STG" cert. Oui, l'URL de la requête est correcte. 2. Je vais essayer, mais ne me dit toujours pas pourquoi cela fonctionne dans le bureau et iOS, mais pas Android. – Gregg
2. le rinçage ne fait pas de différence. Voir ma question mise à jour ci-dessus pour plus d'informations – Gregg
I c. Ainsi, un tuyau cassé peut être causé par un client qui ferme potentiellement la connexion trop tôt (comme un timeout ou une mauvaise communication de la longueur du contenu, peut-être). Est-ce un gros fichier? – dbrin