Java: загрузка с URL - PullRequest
       1

Java: загрузка с URL

0 голосов
/ 16 января 2012

Может ли кто-нибудь попробовать мои коды? Это работало несколько дней назад, а сейчас нет. Я ничего не изменил, и поэтому я подозреваю, что веб-мастер этой стороны заблокировал меня. Может ли кто-нибудь проверить это для меня? Это часть моего школьного проекта.

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 {

  }
}
}

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Прежде всего, очистите ваши исключения ввода-вывода, так как это может скрыть проблему - проверьте, что вы можете написать в D:.

Если сайт заблокирован из-за заголовка пользовательского агента:

Это покажет вам ваш заголовок user-agent: http://pgl.yoyo.org/http/browser-headers.php. Затем ответ на Настройка агента пользователя 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();
            }
        }
    }
0 голосов
/ 16 января 2012

Я проверил ваш код и запустил его, у меня не было проблем, все работает отлично. Ты работаешь за прокси?

В этом случае вы должны настроить его:

System.setProperty("http.proxyHost", "my.proxy.name");
System.setProperty("http.proxyPort", "8080");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...