Android 使用其 URL 检查文件是不是存在于远程服务器中
Posted
技术标签:
【中文标题】Android 使用其 URL 检查文件是不是存在于远程服务器中【英文标题】:Android checks if file exists in a remote server using its URLAndroid 使用其 URL 检查文件是否存在于远程服务器中 【发布时间】:2014-06-30 15:26:23 【问题描述】:我希望我的 android 程序使用其 URL 检查文件(例如 index.php)是否存在于远程服务器中。即,如果我单击按钮,它应该检查 url 是否存在。如果是,它应该加载相同的 URL,否则会显示消息“文件不存在!”
我做了这样的事情:
private OnClickListener cameraListener9=new OnClickListener()
public void onClick(View v)
idNo=editText.getText().toString();
String URLName ="http://blahblah/kufpt/upload_test/"+ idNo + "/index.php";
boolean bResponse = exists(URLName);
if (bResponse==true)
Toast.makeText(MainActivity.this, "FILE EXISTS" , Toast.LENGTH_SHORT).show();
WebView mWebView =(WebView)findViewById(R.id.webView);
mWebView.loadUrl(URLName);
else
Toast.makeText(MainActivity.this, "File does not exist!", Toast.LENGTH_SHORT).show();
;
/* 这是检查 index.php 文件是否存在或已创建的函数 */ 如Check if file exists on remote server using its URL 中所建议的那样
public static boolean exists(String URLName)
try
HttpURLConnection.setFollowRedirects(false);
// note : you may also need
//HttpURLConnection.setInstanceFollowRedirects(false)
HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
catch (Exception e)
e.printStackTrace();
return false;
但是,即使文件确实存在于指定文件夹中,这也总是给我一个错误的返回值。只是一次绝望的尝试,我尝试显示 con.getResponsecode() 的值,它总是给我一个 0 值。任何人都可以帮助我为什么输出会这样?
【问题讨论】:
您是否在清单中添加了Internet
权限?
您可能遇到了异常。如果是这样,您可以发布例外情况吗?
@Coderji 感谢您的回复。我的清单中确实有互联网许可:我相信你是在你的主线程中这样做的。这就是它不工作的原因,你不能在你的主线程中执行网络操作。
尝试将代码放在 AsyncTask 或 Thread 中。
编辑 1:作为一种快速修复,尝试像这样包装您的“文件检查代码”:
new Thread()
public void run()
//your "file checking code" goes here like this
//write your results to log cat, since you cant do Toast from threads without handlers also...
try
HttpURLConnection.setFollowRedirects(false);
// note : you may also need
//HttpURLConnection.setInstanceFollowRedirects(false)
HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
con.setRequestMethod("HEAD");
if( (con.getResponseCode() == HttpURLConnection.HTTP_OK) )
log.d("FILE_EXISTS", "true");
else
log.d("FILE_EXISTS", "false");
catch (Exception e)
e.printStackTrace();
log.d("FILE_EXISTS", "false");;
.start();
【讨论】:
SirJanBo,它有效!非常感谢......如果文件确实存在,它会给我 200,如果不存在,它会给我 404。但只是一个后续问题,是否可以使用 WebView 在该线程中加载 url?当我插入这行代码时,它似乎不起作用: if( (con.getResponseCode() == HttpURLConnection.HTTP_OK) ) Log.d("FILE_EXISTS", "true"); WebView mWebView =(WebView)findViewById(R.id.webView); mWebView.loadUrl(URLName); 彻底解决了问题,别管后续问题了!再次感谢 @JanBo 先生!.. 你拯救了我的一天!以上是关于Android 使用其 URL 检查文件是不是存在于远程服务器中的主要内容,如果未能解决你的问题,请参考以下文章