当前位置: 首页 > 知识库问答 >
问题:

JAVA网SocketException-尝试获取XML

边国安
2023-03-14

我有一个简单的代码,从网络上获取一个XML文件。更具体地说,是一个包含挪威银行汇率的XML文件。问题是,它只是有时起作用。通常,它从来没有工作的第一次。

经过一些测试,我很确定它在InputStreamReader(url.openStream())上崩溃。但正如一所说,并不是每次都这样。

那么,有没有更好的方法来实现这一点,并确保它正确地获取XML文件

感谢所有的帮助。

public class xmlReader {

private static Properties intProps;

public static void main(String[] args) {
    intProps = new Properties();

    intProps.setProperty("SOURCEURL", "https://www.dnb.no/portalfront/datafiles/miscellaneous/csv/kursliste_ws.xml");
    intProps.setProperty("SOURCEDIR", "C:\\Users\\");
    intProps.setProperty("SOURCEFILE", "EXCHANGERATES_#YYYYMMDD#_#U#.xml");     
    fetchURL();
}


private static void fetchURL() {
    try {

        URL url = new URL(intProps.getProperty("SOURCEURL"));
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));


        FileOutputStream fout = new FileOutputStream(intProps.getProperty("SOURCEDIR") + intProps.getProperty("SOURCEFILE"));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
                   System.out.println("Line: " + inputLine);
          fout.write(inputLine.getBytes());                        
        }

        fout.close();

        in.close();

    } catch(Exception e) {
                  e.printStackTrace();
                 // writeLog("Error fetching from URL: " + e.getMessage());                                                                           
    }    

}

错误如下:

JAVA网SocketException:在java上重置连接。网SocketInputStream。在java上读取(未知源代码)。网SocketInputStream。在太阳上读取(未知源)。安全ssl。InputRecord。准备好(未知来源)在太阳。安全ssl。InputRecord。在太阳上读取(未知源)。安全ssl。SSLSocketImpl。sun上的readRecord(未知源)。安全ssl。SSLSocketImpl。在太阳上等待关闭(未知源)。安全ssl。握手流。在阳光下冲洗(未知来源)。安全ssl。握手者。sun的kickstart(未知来源)。安全ssl。SSLSocketImpl。在sun上开始握手(未知来源)。安全ssl。SSLSocketImpl。在太阳上进行穿孔和震动(未知来源)。安全ssl。SSLSocketImpl。太阳上的startHandshake(未知来源)。安全ssl。SSLSocketImpl。太阳上的startHandshake(未知来源)。网www.protocol。https。HttpsClient。sun处的后连接(未知源)。网www.protocol。https。AbstractDelegateHttpsURLConnection。在sun处连接(未知源)。网www.protocol。http。HttpURLConnection。sun上的getInputStream0(未知源)。网www.protocol。http。HttpURLConnection。sun上的getInputStream(未知源)。网www.protocol。https。HttpsURLConnectionImpl。getInputStream(未知源)

共有1个答案

糜单弓
2023-03-14

每次我想下载一个文件,我使用这个代码(或derviations)

try {   
 URL url;
 url = new URL("http://YourWebSourceXML.xml");  


 InputStream in = url.openConnection().getInputStream();
 OutputStream out = new FileOutputStream("YourDestFile.xml");
 byte[] buffer = new byte[1024];
 for (int n;(n = in.read(buffer)) != -1;
         out.write(buffer, 0, n));

 in.close();
 out.close(); }
 catch (IOException e){
 // Do something
 }

编辑:

我第一次尝试就得到了这个:

 try {

    URL url = new URL("http://www.dnb.no/portalfront/datafiles/miscellaneous/csv/kursliste_ws.xml");
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));


    FileOutputStream fout = new FileOutputStream("x.xml");

    String inputLine;
    while ((inputLine = in.readLine()) != null) {
               System.out.println("Line: " + inputLine);
      fout.write(inputLine.getBytes());                        
    }

    fout.close();

    in.close();

} catch(Exception e) {
              e.printStackTrace();
             // writeLog("Error fetching from URL: " + e.getMessage());                                                                           
}    

又快又脏,也许这会有帮助。

 类似资料:
  • 问题内容: 这是我的第一个android程序,它是一个修改过的hello世界。我在MAC上的仿真器上运行它。我尝试与.NET Web服务进行通信,但在处给出了异常。我可以从模拟器访问该站点。任何帮助表示赞赏:) 问题答案: 尝试在您的AndroidManifest.xml中添加“互联网”权限:

  • 问题内容: 我一直在看代码,并且看到了尝试资源的机会。我以前使用过标准的try-catch语句,看起来它们在做同样的事情。所以我的问题是“ 尝试使用资源”与“尝试捕获 ”之间的区别是什么,哪个更好。 这是尝试使用资源: 问题答案: 尝试使用资源的重点是确保可靠地关闭资源。 当你不使用try-with-resources时,存在一个潜在的陷阱,称为异常屏蔽。当try块中的代码引发异常,而finall

  • 首先我知道这是一个重复的问题。但我已经搜索并尝试从谷歌上列出的stackoverflow到quora,但仍然无法解决Get方法仍然返回null的问题。 这是我的类登录模型。com包下的java。你好模型 这是我的登录视图。com包下的java。你好看法 我想从menuView调用我的用户名。com包下的java。你好登录成功后查看 根据我在loginModel中调用Get方法时的问题,messag

  • 问题内容: 当我尝试获取我的keyChain值时,它返回一个包含以下内容的字符串: 因此,我尝试使用循环删除“可选”: 但我得到一个错误:NSString没有名为“下标”的成员 KeychainService类: 我只是不想删除str周围的Optional东西,还是有更好的方法呢? 我从以下代码中获取了代码: http://matthewpalmer.net/blog/2014/06/21/exa

  • 我正在Tomcat上运行一个web应用程序。我的应用程序连接到其他web服务以满足客户端的请求。有时我会得到java。网在打开URL连接时出现UnknownHostException,之后有时我开始使用java。网SocketException:打开的文件太多。我的服务器不再进一步接受连接。请导游。

  • 在Eclipse3.6中运行代码时,我在下面的语句中得到了一个。1: 我读过类似问题的帖子,并尝试过答案,但运气不佳,包括: 使用绝对路径 使用各种相对路径 将gif放入各种文件夹(src、bin、lib等) 创建等待灯。gif- 我当前的图像项目路径是LosOMeter- 有什么想法吗? 堆栈跟踪: