Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android将xml页面保存并url到SD卡_Java_Android_Xml_Url - Fatal编程技术网

Java android将xml页面保存并url到SD卡

Java android将xml页面保存并url到SD卡,java,android,xml,url,Java,Android,Xml,Url,所以我尝试加载一个sit,看起来我需要将它保存到android设备上的xml文档中:p 我看过这篇文章并抄写了答案,但我发现了这个错误 logcat代码 11-19 20:59:57.219: W/System.err(18965): android.os.NetworkOnMainThreadException 11-19 20:59:57.219: W/System.err(18965): at android.os.StrictMode$AndroidBlockGuardPolicy

所以我尝试加载一个sit,看起来我需要将它保存到android设备上的xml文档中:p

我看过这篇文章并抄写了答案,但我发现了这个错误

logcat代码

11-19 20:59:57.219: W/System.err(18965): android.os.NetworkOnMainThreadException
11-19 20:59:57.219: W/System.err(18965):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1208)
11-19 20:59:57.219: W/System.err(18965):    at java.net.InetAddress.lookupHostByName(InetAddress.java:388)
11-19 20:59:57.219: W/System.err(18965):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)
11-19 20:59:57.219: W/System.err(18965):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-19 20:59:57.219: W/System.err(18965):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
11-19 20:59:57.219: W/System.err(18965):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-19 20:59:57.219: W/System.err(18965):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-19 20:59:57.219: W/System.err(18965):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:367)
11-19 20:59:57.219: W/System.err(18965):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:592)
11-19 20:59:57.229: W/System.err(18965):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:510)
11-19 20:59:57.229: W/System.err(18965):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:488)
11-19 20:59:57.229: W/System.err(18965):    at com.example.eve_api_app.MainActivity.executeHttpGet(MainActivity.java:70)
11-19 20:59:57.229: W/System.err(18965):    at com.example.eve_api_app.MainActivity$1.onClick(MainActivity.java:45)
11-19 20:59:57.229: W/System.err(18965):    at android.view.View.performClick(View.java:4102)
11-19 20:59:57.229: W/System.err(18965):    at android.view.View$PerformClick.run(View.java:17085)
11-19 20:59:57.229: W/System.err(18965):    at android.os.Handler.handleCallback(Handler.java:615)
11-19 20:59:57.239: W/System.err(18965):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-19 20:59:57.239: W/System.err(18965):    at android.os.Looper.loop(Looper.java:155)
11-19 20:59:57.239: W/System.err(18965):    at android.app.ActivityThread.main(ActivityThread.java:5454)
11-19 20:59:57.239: W/System.err(18965):    at java.lang.reflect.Method.invokeNative(Native Method)
11-19 20:59:57.239: W/System.err(18965):    at java.lang.reflect.Method.invoke(Method.java:511)
11-19 20:59:57.239: W/System.err(18965):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
11-19 20:59:57.239: W/System.err(18965):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
11-19 20:59:57.239: W/System.err(18965):    at dalvik.system.NativeStart.main(Native Method)
这是我的应用程序代码

package com.example.eve_api_app;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {


      TextView name,corp;
      Button load;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name = (TextView)findViewById(R.id.textView1);
        corp = (TextView)findViewById(R.id.textView3);
        load = (Button) findViewById(R.id.button1);

        load.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ConnectivityManager connMgr = (ConnectivityManager) 
                        getSystemService(Context.CONNECTIVITY_SERVICE);
                    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
                    if (networkInfo != null && networkInfo.isConnected()) {
                      try {
                        executeHttpGet();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    } else {
                        // display error
                    }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public void executeHttpGet() throws Exception {
        corp.setText("rim");
        BufferedReader in = null;
        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet();
            request.setURI(new URI("https://api.eveonline.com/account/characters.xml.aspx?keyID=2795171&vCode=T3VQGPHimVmpgmmqx0fDtegK2sIxjDuZxH5MevPhZQihYlynZG3HmL2aXo3KsTGz"));
            HttpResponse response = client.execute(request);
            in = new BufferedReader
            (new InputStreamReader(response.getEntity().getContent()));
            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) {
                sb.append(line + NL);
            }
            in.close();
            String page = sb.toString();
            System.out.println(page);
            corp.setText(page);
            } finally {
            if (in != null) {
                try {
                    in.close();
                    } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
我在控制台中查看了som cod纯java代码,如下所示

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URL;

import javax.sql.rowset.spi.XmlReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {

    public static void main(String[] args) {

        download();
        read();
    }

    private static void read() {
        // TODO Auto-generated method stub
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dbuilder;
        try {
            dbuilder = builderFactory.newDocumentBuilder();
            Document document = dbuilder.parse(XmlReader.class.getResourceAsStream("/api.xml"));
            document.normalize();

            NodeList rootNodes = document.getElementsByTagName("eveapi");
            Node RootNode = rootNodes.item(0);
            Element rooteElement = (Element) RootNode;

            NodeList resultNote = rooteElement.getElementsByTagName("result");
            Node resultnode = resultNote.item(0);
            Element resultElement = (Element) resultnode;

            NodeList rowsetList = resultElement.getElementsByTagName("rowset");
            Node rowsetNode = rowsetList.item(0);
            Element rowserElement = (Element) rowsetNode;


            NodeList rowset = rowserElement.getElementsByTagName("row");

            for (int i = 0; i < rowset.getLength(); i++) {
                Node theNote = rowset.item(i);
                Element noteElement = (Element) theNote;
                System.out.println(noteElement.getAttribute("name"));
                System.out.println(noteElement.getAttribute("corporationName"));
            }


        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static void download() {
        // TODO Auto-generated method stub
        try {
            URL oracle = new URL(
                    "https://api.eveonline.com/account/characters.xml.aspx?keyID=2795171&vCode=T3VQGPHimVmpgmmqx0fDtegK2sIxjDuZxH5MevPhZQihYlynZG3HmL2aXo3KsTGz");
            BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));

            String inputLine;

            Writer writer = null;

            writer = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream("res/api.xml"), "utf-8"));
            while ((inputLine = in.readLine()) != null){
                writer.write(inputLine);
            }
            writer.close();
        } catch (Exception ex) {
            // report
        } 
    }
}
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.OutputStreamWriter;
导入java.io.Writer;
导入java.net.URL;
导入javax.sql.rowset.spi.XmlReader;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
公共班机{
公共静态void main(字符串[]args){
下载();
read();
}
私有静态void read(){
//TODO自动生成的方法存根
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
文档生成器dbuilder;
试一试{
dbuilder=builderFactory.newDocumentBuilder();
documentdocument=dbuilder.parse(XmlReader.class.getResourceAsStream(“/api.xml”);
document.normalize();
nodelistrootnodes=document.getElementsByTagName(“eveapi”);
节点RootNode=rootNodes.item(0);
元素rooteeElement=(元素)根节点;
nodelistresultnote=rooteElement.getElementsByTagName(“结果”);
节点resultnode=resultNote.item(0);
元素resultElement=(元素)resultnode;
NodeList rowsetList=resultElement.getElementsByTagName(“行集”);
节点rowsetNode=rowsetList.item(0);
元素rowserElement=(元素)rowsetNode;
NodeList rowset=rowselement.getElementsByTagName(“行”);
对于(int i=0;i
这是可行的,但当我将其应用到android上时,它将不起作用:(


任何人都知道我如何做到这一点并将其保存到SD卡???

他们发现了问题,因为帕尼尼说这是因为我在主线程上制作的,android已经破坏了应用程序,并将其移动到异步任务,现在可以工作了