Java:从 URL 下载

标签 java url

有人可以试试我的代码吗?几天前还可以用,现在不行了。我没有修改任何东西,所以我怀疑那边的站长已经屏蔽了我。有人可以帮我查一下吗?这是我学校项目的一部分。

public class Cost extends TimerTask{

public void run() {
  Calendar rightNow = Calendar.getInstance();
  Integer hour = rightNow.get(Calendar.HOUR_OF_DAY);

  if (hour==1) {
    try {
      URL tariff = new URL("http://www.emcsg.com/MarketData/PriceInformation?downloadRealtime=true");
      ReadableByteChannel tar = Channels.newChannel(tariff.openStream());
      FileOutputStream fos = new FileOutputStream("test.csv");
      fos.getChannel().transferFrom(tar, 0, 1<<24);

    } catch (IOException ex) {
      Logger.getLogger(Cost.class.getName()).log(Level.SEVERE, null, ex);
    } 
  }

  else {

  }
}
}

最佳答案

首先,清理 IO 异常,因为这可能会掩盖问题 - 检查您是否可以写入 D:。

如果您因用户代理 header 而被网站阻止:

这将显示您的用户代理 header :http://pgl.yoyo.org/http/browser-headers.php 。然后答案为Setting user agent of a java URLConnection告诉您如何设置标题。

您需要在实例化 URL 和打开流之间添加一个步骤:

URL tariff = new URL("http://www.emcsg.com/MarketData/PriceInformation?downloadRealtime=true");
java.net.URLConnection c = tariff.openConnection();
c.setRequestProperty("User-Agent", " USER AGENT STRING HERE ");
ReadableByteChannel tar = Channels.newChannel(c.getInputStream());

或者你可以尝试这样做:

System.setProperty("http.agent", " USER AGENT STRING HERE ");

在调用openStream()之前的某个时间。

编辑:这对我有用。您可以尝试运行它并让我们知道输出吗:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

    public class TestURL {

        public static void main(String[] args) {
            try {
              URL tariff = new URL("http://www.emcsg.com/MarketData/PriceInformation?downloadRealtime=true");
              URLConnection c = tariff.openConnection();
              BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
              System.out.println(br.readLine());
            } catch (IOException ex) {
              ex.printStackTrace();
            }
        }
    }

关于Java:从 URL 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883626/

相关文章:

java - 通过 Web 服务可以传输的最大数据量是多少?

.htaccess - 使用 .htaccess 将路径查询转换为 url 变量?

swift - Flutter channel 方法字符串不能用作 URL

Javadoc 并链接到 UNC 路径上的文件

c# - 你会选择什么样的设计模式?

java - ExecutorServiceawaitTermination 方法与使用 CountDownLatch

java - 将java对象异步保存到内存中?

java - 将excel文件表导入java时出错

AngularJS Web 应用程序

url - grails测试网址参数