如何在android中访问web目录文件列表
我想从web目录文件列表中显示listview。如何在android中访问web目录文件列表 例: 这是web目录 公共类MainActivity扩展了活动{如何在android中访问web目录文件列表,android,listview,Android,Listview,我想从web目录文件列表中显示listview。如何在android中访问web目录文件列表 例: 这是web目录 公共类MainActivity扩展了活动{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // JSONObject json =
@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;
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//JSONObject json=JSONfunctions
//.getJSONfromURL(“http://selangorbn.fm/song/");
//Log.d(“标记”、“json”+json);
}
@凌驾
受保护的void onResume(){
//TODO自动生成的方法存根
super.onResume();
新建Getparse().execute();
}
私有void parse()引发IOException{
字符串行=null,响应;
URL=新URL(“http://selangorbn.fm/song/");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
BufferedReader rd=新的BufferedReader(新的InputStreamReader(
conn.getInputStream());
while(rd.readLine()!=null){
line+=rd.readLine();
}
系统输出打印项次(行);
}
公共类Getparse扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
@凌驾
受保护的整数doInBackground(Void…params){
//TODO自动生成的方法存根
试一试{
parse();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(整数结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
}
获取空值。这对您不起作用,因为您试图在主应用程序线程上与Internet通信。这样做会使申请暂停,直到收到答复为止。因此Android有内部检查。您应该从您的代码中获取 您需要启动一个单独的服务器,并从那里与服务器进行对话。获取列表后,使用更新结果(您不能从网络线程中接触任何GUI元素)
只有当这是您可以从不合作的第三方服务器获得的全部信息时,解析HTML才是合理的。正如kumar所建议的,如果可以,请使用JSON或XML。使用JSOUP,您可以列出远程目录中的所有文件。但我面临的一个问题是,如果该目录中有主页(Ex:index.html),那么它就不能读取该文件之外的内容。这是一个缺点。您可以使用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);
Document doc=Jsoup.connect(urltod).timeout(0.get();
文档选择(“img”).remove();
元素链接=文件选择(“a”);
List listmainlinks=new ArrayList();
List-listnumberslinks=new-ArrayList();
List listweblinks=new ArrayList();
用于(元素链接:链接){
//字符串linkOuterH=link.outerHtml();//allhreaf incl name
字符串linkInnerH=link.html();//foldername
字符串linkHref=link.attr(“href”);//folderlink
//System.out.println(“linkHref”+linkInnerH);
如果(linkInnerH.equals(“”| | linkInnerH.equals(“”| | linkInnerH.equals(null)){}
否则{
if(linkInnerH.contains(“大小=\“2\”)){
字符串[]afterfonttagarray=linkInnerH.split(“\”>”);
字符串afterfonttag=afterfonttagarray[1];
字符串[]beforefonttagarray=afterfonttag.split(“”);
字符串beforefonttag=beforefonttagarray[0];
添加(在FontTag之前);
listweblinks.add(“http://www.abc.com/audio/“+linkHref);
}
}
System.out.println(“listmainlinks”+listmainlinks);“+listnumberslinks);
System.out.println(“listweblinks”+listweblinks);
这将为您提供文件夹名称以及与之相关联的链接,以便您以后使用
ArrayList>albumsList存储并迭代到列表或任何内容{
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]
org.jsoup.nodes.Document doc=jsoup.connect(“https://test.com/appdata/0131).get();
文档选择(“img”).remove();
元素链接=文件选择(“a”);
List listmainlinks=new ArrayList();
List listweblinks=new ArrayList();
for(org.jsoup.nodes.Element链接:links){
字符串linkInnerH=link.html();
字符串linkHref=link.attr(“href”);
System.out.println(“linkHref:+linkHref”);
System.out.println(“linkInnerH:+linkInnerH”);
如果(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”){
else if(linkHref.contains(“/”)
{
如果(!linkInnerH.contains(“父目录”))
listmainlinks.add(linkHref);
}
否则{
listweblinks.add(“https://test.com/appdata/0131“+linkHref);
}
}
System.out.println(“listmainlinks”+listmainlinks);
System.out.println(“listweblinks”+listweblinks);
/*元素img=do