通过url获取csv时未知的主机异常

时间:2013-08-26 04:45:50

标签: java csv unknown-host

当我执行以下代码时:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;



import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Transform {
    public static Logger logger = Logger.getLogger(Transform.class);

    public static void main(String[] args){
        //Logger logger = Logger.getLogger(Transform.class);
        try
        {
        PropertyConfigurator.configure("log4j.properties");
        Properties prop = new Properties();
        String mode = null;
        URL url = null;
        //String filePath = null;
        StringBuilder sb = null;
        String csv = null;
        String separator = null;
        URL sourceCSVURL = null;
        URL destinationCSVURL = null;
        String sourceCSVFile = null;
        String destinationCSVFile = null;
        String sourceJson = null;
        String destinationJson = null;
        int flag = 0;
        prop.load(new FileInputStream("jsonGenerator.properties"));


        mode = prop.getProperty("mode");

        separator = prop.getProperty("separator");
        if(!prop.getProperty("sourceCSVURL").trim().equals(""))
        {
        sourceCSVURL = new URL(prop.getProperty("sourceCSVURL").toString());
        }
        if(!prop.getProperty("destinationCSVURL").trim().equals(""))
        destinationCSVURL = new URL(prop.getProperty("destinationCSVURL").toString());
        sourceCSVFile = prop.getProperty("sourceCSVFile");
        destinationCSVFile = prop.getProperty("destinationCSVFile");
        sourceJson = prop.getProperty("sourceJson");
        destinationJson = prop.getProperty("destinationJson");


        for(int a=0;a<2;a++)
        {
        if(mode.trim().toLowerCase().equals("url"))
        {
            if(flag == 0)
            {
                csv=IOUtils.toString(sourceCSVURL);
            }
            else
            {
                csv=IOUtils.toString(destinationCSVURL);
            }
        }
        else if(mode.trim().toLowerCase().equals("file"))
        {
            byte[] bytes=null;
            if(flag == 0)
            {
                bytes = org.apache.commons.io.FileUtils.readFileToByteArray(new File(sourceCSVFile));
                csv = new String(bytes);
            }
            else
            {
                bytes = org.apache.commons.io.FileUtils.readFileToByteArray(new File(destinationCSVFile));
                csv = new String(bytes);
            }
        }




        sb = new StringBuilder("{\n\t\"items\": [\n");
        csv = csv.replace("\r", "");
        String csvValues[] = csv.split("\n");
        String header[]=csvValues[0].split(separator);

        for(int i=1;i<csvValues.length;i++){
            sb.append("\t").append("{").append("\n");
            String tmp[]=csvValues[i].split(separator);
            for(int j=0;j<tmp.length;j++){
                sb.append("\t").append("\t\"").append(header[j]).append("\":\"").append(tmp[j]).append("\"");
                if(j<tmp.length-1){
                    sb.append(",\n");
                }else{
                    sb.append("\n");
                }
            }
            if(i<csvValues.length-1){
                sb.append("\t},\n");
            }
            else{
                sb.append("\t}\n");
            }
        }
        File file =null;
        sb.append("]\n}");
        if(flag==0)
        {
            file = new File(sourceJson);
        }
        else
        {
            file = new File(destinationJson);
        }
        flag++;

        FileUtils.writeStringToFile(file,sb.toString());

        }
        logger.info("Successfully Executed");
        }
        catch(MalformedURLException e)
        {    
             logger.error("Error : " + e.getMessage());
            e.printStackTrace();

        }

        catch (Exception e) {
            logger.error("Error : " + e.getMessage());
            e.printStackTrace();
        }



    }
}

我得到以下异常:

java.net.UnknownHostException: finance.yahoo.com
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.<init>(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:742)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:727)
    at Transform.main(Transform.java:63)

我给出了这些价值观:

sourceCSVURL =http://finance.yahoo.com/d/quotes.csv
destinationCSVURL =http://finance.yahoo.com/d/quotes.csv

1 个答案:

答案 0 :(得分:0)

错误消息java.net.UnknownHostException: finance.yahoo.com表示您的java程序无法解析finance.yahoo.com的IP地址。

尝试查看是否可以从将运行此程序的实际计算机上下载CSV文件。我的猜测是你的java程序没有互联网连接来解析DNS到finance.yahoo.com