2017-01-27 3 views
2

J'utilise la bibliothèque JCIFS et je l'URL du fichier sambachemin URL SmbFile avec mot de passe ayant un @

SmbFile file = new SmbFile("smb://domain;username:[email protected]@abc.com/share/filename.txt") 
file.connect 

Notez que le mot de passe a un @. Connexion de fichier Samba échoue donnant un java.net.UnknownHostException. Autre que l'analyse syntaxique de l'URL et le passage d'authentification séparément en utilisant NtlmAuthentication, est-il d'une autre manière ...

Dans l'URL Format j'ai essayé de mettre des crochets et cela n'a pas aidé.

+0

N'utilisez jamais d'informations d'identification dans l'URL. C'est pour les hacks rapides et sales. Utilisez l'objet NtlmPasswordAuthentication. – squarewav

Répondre

0

J'ai fait UrlEncode du mot de passe et cela a résolu le problème.

2

URL Coder le mot de passe ci-dessous

URLEncoder.encode(password, "UTF-8"); 

cela encoder votre mot de passe -P% 40ssword Cette appelé présente encoding.Check ce Wikipédia Link pour en savoir plus sur le codage présent.

Mais ce n'est pas une bonne pratique. Créez une NtlmPasswordAuthentication pour définir les détails d'authentification.

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, username, password); 
String path ="abc.com/share/filename.txt"; 
SmbFile file = new SmbFile(path,auth);