Server returned HTTP response code: 403 for URL

 
 
 
Сообщения:76
Здравствуйте, уважаемые форумчани. Помогите решить проблему.
Я пишу программу которая анализирует котировки акций и программа постоянно обращается до сервера для получения данных.
Но при частом обращение мне выдает ошибку Server returned HTTP response code: 403 for URL http://www.google.com/finance/getprices?q=MILL&i=300&p=3d&f=d,o,h,l,c,v

Вот мой код. Подскажите как решить эту проблему.
private List<Bar> getQuotes(String ticker) throws MalformedURLException,
			IOException {
		List<Bar> bars = new ArrayList<>();
		String strUrl = "http://www.google.com/finance/getprices?q=" + ticker
				+ "&i=300&p=3d&f=d,o,h,l,c,v";
		try {
			URL url = new URL(strUrl);
			URLConnection uc = new URL(strUrl).openConnection();
			uc = url.openConnection();
			uc.addRequestProperty("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
			uc.connect();
			InputStream stream = uc.getInputStream();
			in = new BufferedReader(new InputStreamReader(stream));

			stream.close();
		} catch (Exception e) {
			System.out.println(e.getLocalizedMessage());
		}
		String s;
		while ((s = in.readLine()) != null) {
			String[] w = s.toString().split(",");
			try {
				bars.add(new Bar(Integer.parseInt(w[0]),
						Float.parseFloat(w[1]), Float.parseFloat(w[2]), Float
								.parseFloat(w[3]), Float.parseFloat(w[4]),
						Integer.parseInt(w[5])));
			} catch (Exception e) {
				System.out.println(e.getLocalizedMessage());
			}
		}
		in.close();
		return bars;
	}
Изменен:14 янв 2015 12:04
 
 
Сообщения:7989
Ну поскольку 403 означает что у вас нет прав туда смотреть, то очевидно стоит авторизоваться.

www.codeabbey.com - programming problems for novice coders (+ certificates)
 
 
Сообщения:48
скорее всего ничего не получится сделать, удаленный сервер просто не хочет так часто отдавать вам данные, попробуйте сделать задержку побольше
 
 
Сообщения:1527
Dzigar, если не секрет, в чем сакральный смысл стр. 9-12: openConnection, openConnection, connect()?
Необходимо и достаточно:
            URL url = new URL(strUrl);
            URLConnection uc = url.openConnection();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
 
 
Сообщения:14
RodionGork:
Ну поскольку 403 означает что у вас нет прав туда смотреть, то очевидно стоит авторизоваться.


та же самая беда, только с другими сайтами.
через браузер - страницы открываются без проблем (без какой либо авторизации)
через java - выдает java.io.IOException: Server returned HTTP response code: 403 for URL

можно конечно пойти длинным путем - заставить открывать и сохранять каждую страницу браузером, и только потом парсить и делать что там задумано, но это ж геморой!!

разве нет пути по проще?
как обмануть сервер?)
может ему что то еще в нагрузку надо заслать?

в соседней ветке пишут:
Похоже дело в NTLM аутентификации.
и
Я с такой байдой сталкивался при попытке чтения гугла из джавы. Решил проблему, отправив запрос, предельно похожий на браузерный.

у меня в запросе дополнительно прописано только:
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");

//нифига не помогает
Изменен:05 янв 2017 07:58
 
 
Сообщения:14
есть предположение что надо куки передать полученные при первом посещении такого сайта...
 
 
Сообщения:142
тебе нужно немного узнать про взаимодействие по протоколу http, как это вообще работает

 
 
Сообщения:14
wind:
тебе нужно немного узнать про взаимодействие по протоколу http, как это вообще работает

а тебе бы на ОтветыМаилРу со столь исчерпывающими комментариями...
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет