簡體   English   中英

如何從url獲取xml數據流而不僅僅是文件

[英]how to get xml data stream from url and not just a file

package org.me.myandroidstuff;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import org.me.myandroidstuff.CarParkClass;
import org.me.myandroidstuff.XMLPullParserHandler;

public class CarParkListingTestActivity extends Activity 
{

ListView listView;

private String url = "example.com?type=xml";

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    listView = (ListView) findViewById(R.id.list);

    List<CarParkClass> carparks = null;
    try{
        XMLPullParserHandler parser = new XMLPullParserHandler();
        carparks = parser.parse(getAssets().open("carparks.xml"));
        //InputStream is = new FileInputStream(url);
        //carparks = parser.parse(is);
        ArrayAdapter<CarParkClass> adapter = 
                new ArrayAdapter<CarParkClass>(this,R.layout.list_item, carparks);
        listView.setAdapter(adapter);
    } catch(IOException e){
        e.printStackTrace();
    }

    listView.setBackgroundColor(Color.WHITE);

}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    //getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

我想解析來自url的數據,而不是資產文件夾中的文件。 我該如何接近這一步呢。

我嘗試從我的資源文件夾解析,並且應用程序工作得非常好,但是當我嘗試從URL中解析時,它不起作用。

非常感謝您的幫助謝謝

您可以發出異步請求

如果需要,您也可以使用post方法:

public class MyAsyncRequest extends AsyncTask<String, String, String> {
        OnMyListener myListener;

        Context dContext;

        public interface OnMyListener {
            public void OnListener(String account);
        }

        public MyAsyncRequest(Context ctxt) {
            // TODO Auto-generated constructor stub
            this.dContext = ctxt;
            myListener = (OnMyListener) ctxt;
        }

        private ProgressDialog pDialog;

        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(dContext);
            pDialog.setMessage("Downloading..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.setCanceledOnTouchOutside(false);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            String data = postData();
            return data;
        }

        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            pDialog.dismiss();
            myListener.OnListener(result);
        }

        public String postData(){

            ByteArrayOutputStream buf = new ByteArrayOutputStream();

            HttpClient client = new DefaultHttpClient();
            HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
            HttpResponse response;
            try {

                //Http
                HttpGet getRequest = new HttpGet("https:/your.url");

                response = client.execute(getRequest);

                /*Checking response */
                if(response!=null){
                    InputStream in = response.getEntity().getContent(); //Get the data in the entity
                    BufferedInputStream bis = new BufferedInputStream(in);

                    int result = bis.read();
                    while(result != -1) {
                        byte b = (byte)result;
                        buf.write(b);
                        result = bis.read();
                    }
                    //return buf.toString();
                }else{
                }

            } catch(Exception e) {
                e.printStackTrace();
            }

            return buf.toString();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM