2010-09-23 8 views
2

Actuellement, j'utilise Apache CommonsVFS pour récupérer des images d'autres sites et cela fonctionne bien. Le site Web de CommonsVFS dit qu'il supporte le protocole HTTPS, mais j'ai trouvé que je ne pouvais pas accéder à ces URL commence par https: // en utilisant CommonVFS, alors que je pouvais normalement browse it de mon Firefox.Apache CommonsVFS se connecter au serveur https

Par exemple, le code suivant donnera une exception ne dit pas pu se connecter au serveur HTTP ..

scala> import org.apache.commons.vfs.VFS             
import org.apache.commons.vfs.VFS 

scala> val fsManager = VFS.getManager(); 
fsManager: org.apache.commons.vfs.FileSystemManager = [email protected] 

scala> val file1 = fsManager.resolveFile ("http://bone.twbbs.org.tw/Images/desk.jpg") 
file1: org.apache.commons.vfs.FileObject = http://bone.twbbs.org.tw/Images/desk.jpg 

scala> val file2 = fsManager.resolveFile ("https://na.archives.gov.tw/archives/chinese/98/search/popup.jsp?res=/export/home/xdcm/do/ScaleDoFiles/jpg/00/00/01/21/07/A313480000K=0089=577=1=1=003=0002-i.jpg") 
org.apache.commons.vfs.FileSystemException: Could not connect to HTTP server on "na.archives.gov.tw". 
    at org.apache.commons.vfs.provider.http.HttpClientFactory.createConnection(HttpClientFactory.java:105) 
    at org.apache.commons.vfs.provider.http.HttpFileProvider.doCreateFileSystem(HttpFileProvider.java:81) 
    at org.apache.commons.vfs.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:81) 
    at org.apache.commons.vfs.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:62) 
    at org.apache.commons.vfs.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:641) 
    at org.apache.commons.vfs.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:602) 
    at org.apache.commons.vfs.impl.DefaultFileS... 

J'ai aussi essayé d'ajouter fournisseur HTTPS pour FileManager, mais n'a toujours pas de chance, il dit schéma d'URL "https" est déjà enregistré. Alors, comment pourrais-je utiliser commonVFS pour accéder au serveur https?

scala> fsManager.asInstanceOf[org.apache.commons.vfs.impl.StandardFileSystemManager].addProvider("https", new org.apache.commons.vfs.provider.https.HttpsFileProvider) 
org.apache.commons.vfs.FileSystemException: Multiple providers registered for URL scheme "https". 
    at org.apache.commons.vfs.impl.DefaultFileSystemManager.addProvider(DefaultFileSystemManager.java:174) 
    at org.apache.commons.vfs.impl.DefaultFileSystemManager.addProvider(DefaultFileSystemManager.java:152) 
    at .<init>(<console>:8) 
    at .<clinit>(<console>) 
    at RequestResult$.<init>(<console>:9) 
    at RequestResult$.<clinit>(<console>) 
    at RequestResult$scala_repl_result(<console>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at scala.tools.nsc.Interpr... 

Répondre

2

OK, j'ai découvert qu'il lève cette exception car le certificat du site que j'essaie de connecter n'est pas approuvé dans mon keystore Java.

J'ai suivi le instruction here pour ajouter le certificat à mon magasin de clés, et tout fonctionne correctement maintenant.

Questions connexes