SmbFile генерирует UnknownHostException, если подпапка в пути - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь записать тестовый файл (в моем приложении для Android) в общий ресурс SMB на сервере Windows 2008.Если путь, в который я пытаюсь записать, включает имя подпапки (например, «smb: //192.168.1.25/D/mysubfolder» - где D - это имя общего ресурса для диска D удаленного компьютера), то операция работаетхорошо.Однако, если имя подпапки не указано, я получаю исключение UnknownHostException при попытке записать файл в общую папку.Поэтому я получаю исключение UnknownHostException для обоих следующих путей:

smb: //192.168.1.25/D/

smb: //192.168.1.25/myfoldershare (где myfoldershare - это имя общего ресурса длявложенная папка на диске D)

Все перечисленные выше имена общих ресурсов имеют одинаковые разрешения, настроенные на хосте (полный контроль для всех).Почему я всегда получаю UnknownHostException, если я не добавляю имя подпапки к пути?

Я пробовал различные варианты разрешений на узле SMB, но теперь прибегнул к «Полному управлению» для всех общих ресурсов.что я пытаюсь получить доступ.Я пытался записывать в одни и те же общие папки (используя те же учетные данные для входа), используя приложение Solid Explorer на том же устройстве Android.У меня нет проблем с записью в любой из «проблемных» общих ресурсов.

String testPathRootDest = "smb://192.168.1.25/myfoldershare/";
try {
  SmbFile newFolder = new SmbFile(testPathRootDest, testAuth);
  if (!newFolder.canWrite()) {
    return "NotWritable";
           }
            // Finally, try writing a test file
            String testFilePath = testPathRootDest + "test.txt";
            SmbFile testFile = new SmbFile(testFilePath, testAuth);
            SmbFileOutputStream out = new SmbFileOutputStream(testFile);
            String text = "File Upload Test";
            out.write(text.getBytes());
            out.flush();
            out.close();
            // Delete test file
            testFile.delete();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            errorMessage = e.toString();
            e.printStackTrace();
            if (errorMessage.contains("UnknownHostException")) {
                return "UnknownHostException";
            } else {
                return "IOException";
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
            errorMessage = e.toString();
            e.printStackTrace();
            return "IOException";
        }

Я ожидаю, что команда «new SmbFile» завершится без ошибок, но она возвращает UnknownHostException, если мне не удается добавить имя папкина путь

...