我想从网络目录文件列表中显示listview。如何访问android中的web目录文件列表。
这是网络目录。
公共类MainActivity扩展了Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// JSONObject json = JSONfunctions
// .getJSONfromURL("http://selangorbn.fm/song/");
// Log.d("TAG", "json" + json);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
new Getparse().execute();
}
private void parse() throws IOException {
String line = null, response;
URL url = new URL("http://selangorbn.fm/song/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
while (rd.readLine() != null) {
line += rd.readLine();
}
System.out.println(line);
}
public class Getparse extends AsyncTask<Void, Void, integer> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected integer doInBackground(Void... params) {
// TODO Auto-generated method stub
try {
parse();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(integer result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
} 获得空值。
答案 0 :(得分:1)
这对您不起作用,因为您尝试在主应用程序线程上与Internet通信。这样做会使应用程序停止,直到收到回复为止。因此Android有内部检查。您应该从代码中获取network on main thread exception。
您需要启动单独的thread并从那里与服务器通话。获得列表后,使用runOnUiThread更新结果(不能触摸网络线程中的任何GUI元素)。
解析HTML只有在您从不合作的第三方服务器获得的全部内容时才是合理的。正如kumar建议的那样,如果可以,请使用JSON或XML。
答案 1 :(得分:0)
使用JSOUP可以列出远程目录中的所有文件。但我面临的一个问题是,如果该目录中有主页(例如:index.html),那么它不会超出该文件。这是一个缺点。
答案 2 :(得分:0)
您可以使用jsoup来获取与名称
的文件夹链接的href标记Document doc = Jsoup.connect(urltod).timeout(0).get();
doc.select("img").remove();
Elements links = doc.select("a");
List<String> listmainlinks = new ArrayList<>();
List<String> listnumberslinks = new ArrayList<>();
List<String> listweblinks = new ArrayList<>();
for (Element link : links) {
// String linkOuterH = link.outerHtml(); //allhreaf incl name
String linkInnerH = link.html(); // foldername
String linkHref = link.attr("href"); //folderlink
// System.out.println("linkHref "+linkInnerH );
if(linkInnerH.equals("") ||linkInnerH.equals(" ")||linkInnerH.equals(null) ){ }
else{
if(linkInnerH.contains("size=\"2\"")){
String[] afterfonttagarray =linkInnerH.split("\">");
String afterfonttag = afterfonttagarray[1];
String[] beforefonttagarray =afterfonttag.split("</font>");
String beforefonttag = beforefonttagarray[0];
listmainlinks.add(beforefonttag);
listweblinks.add("http://www.abc.com/audio/"+linkHref);
}
}
System.out.println("listmainlinks "+ listmainlinks); "+listnumberslinks);
System.out.println("listweblinks "+listweblinks);
这将为您提供文件夹名称以及以后可以使用的与之关联的链接 的ArrayList&GT; albumsList用于存储和迭代列表或任何内容
答案 3 :(得分:0)
try {
org.jsoup.nodes.Document doc = Jsoup.connect("https://test.com/appdata/0131").get();
doc.select("img").remove();
Elements links = doc.select("a");
List<String> listmainlinks = new ArrayList<>();
List<String> listweblinks = new ArrayList<>();
for (org.jsoup.nodes.Element link : links) {
String linkInnerH = link.html();
String linkHref = link.attr("href");
System.out.println("linkHref: "+ linkHref);
System.out.println("linkInnerH: "+ linkInnerH);
if(linkInnerH.equals("") ||linkInnerH.equals(" ")||linkInnerH.equals(null) || linkHref.contains("?C=N;O=D")|| linkHref.contains("?C=M;O=A")||linkHref.contains("?C=S;O=A") ||linkHref.contains("?C=D;O=A")){ }
else if(linkHref.contains("/"))
{
if(!linkInnerH.contains("Parent Directory"))
listmainlinks.add(linkHref);
}
else{
listweblinks.add("https://test.com/appdata/0131" + linkHref);
}
}
System.out.println("listmainlinks "+ listmainlinks);
System.out.println("listweblinks "+listweblinks);
/* Elements img = doc.getElementsByTag("img");
int counter = 0;
for (org.jsoup.nodes.Element el : img) {
// If alt is empty or null, add one to counter
if(el.attr("alt") == null || el.attr("alt").equals("")) {
counter++;
}
System.out.println("image tag: " + el.attr("src") + " Alt: " + el.attr("alt"));
}
System.out.println("Number of unset alt: " + counter);*/
} catch (IOException e) {
e.printStackTrace();
}
https://test.com/appdata/
I/System.out: listmainlinks [0216/, 0128/, 0131/]
I/System.out: listweblinks []
https://test.com/appdata/0131/
I/System.out: listmainlinks []
I/System.out: listweblinks [https://test.com/appdata/0131/logo.png]