下面是这样的情况:我想用代码验证我的Android设备,通过向特定的URL发送用户名和密码,这个URL将具有内部和外部访问权限。通过读取主要工作是使用NTML连接到windows的JCIFS图书馆,试图使其在android中工作,我插入了以下代码:
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
String user = "username";
String pass = "password";
String sharedFolder = "shared";
String url = "smb://url/url//" + sharedFolder + "/test.txt";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(
null, user, pass);
SmbFile sfile = new SmbFile(url, auth);
sfile.canRead();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute();这个示例代码只用于从Windows获得对我的Android应用程序的授权,我只想返回Auth,而不是复制文件或在文件之间进行比较。在阅读了UrlConnection和UrlStreamHandler之后,我失败了,并且尝试了StackOverFlow中几乎所有的问题,但是我没有找到答案。
此外,当我应用此代码时,所收到的消息是
02-21 04:50:02.329 3032-3046/ils.com.ntmlproject W/System.err: jcifs.smb.SmbException: Failed to connect to server
02-21 04:50:02.329 3032-3046/ils.com.ntmlproject W/System.err: java.net.UnknownHostException: jorphp01
02-21 04:50:02.329 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.UniAddress.getAllByName(UniAddress.java:315)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:864)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.connect(SmbFile.java:954)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.connect0(SmbFile.java:880)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.queryPath(SmbFile.java:1338)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.exists(SmbFile.java:1420)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.canRead(SmbFile.java:1462)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at ils.com.ntmlproject.MainActivity$1.doInBackground(MainActivity.java:51)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at ils.com.ntmlproject.MainActivity$1.doInBackground(MainActivity.java:39)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.lang.Thread.run(Thread.java:841)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.connect0(SmbFile.java:882)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.queryPath(SmbFile.java:1338)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.exists(SmbFile.java:1420)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at jcifs.smb.SmbFile.canRead(SmbFile.java:1462)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at ils.com.ntmlproject.MainActivity$1.doInBackground(MainActivity.java:51)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at ils.com.ntmlproject.MainActivity$1.doInBackground(MainActivity.java:39)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-21 04:50:02.339 3032-3046/ils.com.ntmlproject W/System.err: at java.lang.Thread.run(Thread.java:841)我不知道这个错误是否在http协议中?还是在密码里?我需要在这里调整什么,我错过了什么?
发布于 2017-02-23 06:38:25
主机名:jorphp01不能从执行代码的设备解析。以下是可能的解决办法:
发布于 2017-02-23 09:49:48
我发现了什么情况下的错误和我的案子的解决方案。首先,感谢“Pavan Kumar”回答这个问题,并给我一些提示。
其职能是:
static String doGetRequest(String url) throws IOException {
okHttpClient = new OkHttpClient.Builder()
.authenticator(new NTMLAuthenticator("username", "password"))
.build();
Request request = new Request.Builder()
.url(url)
.build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();}此代码的来源,并使用jcifs库进行身份验证。
在此之后,我可以很容易地登录到服务器,并发送认证。
这些也是一些有用的资源,可以从以下方面看到:
https://stackoverflow.com/questions/42363973
复制相似问题