В чем разница между этими двумя способами получения информации от пользователя?

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

$url="http://www.example.com/viewProperty.html?id=".$id;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$html = curl_exec($ch);
curl_close($ch);
-1
задан Rich 18 March 2019 в 18:11
поделиться

2 ответа

Это просто два совершенно разных животных. При чтении из потока вы читаете простые количества ... символы, байты, строки. Затем, как вы показываете, вам нужно добавить дополнительный код для интерпретации этих величин более высокоуровневым способом.

Согласно документации для Scanner:

Простой текстовый сканер, который может анализировать примитивные типы и строки с помощью регулярных выражений.

Так что Scanner добавляет еще один уровень функциональности поверх потока. Парсит вход. Он разбивает входящие данные на части и пытается интерпретировать их различными способами, более сложными, чем просто байты или строки. Сканер предоставляет вам множество функций, которые вы должны написать сами, если бы использовали простой поток.

Чтобы ответить на ваш конкретный вопрос несколько более остро ... дают ли оба предложенных блока кода требуемый результат? Если это так, и если вы не собираетесь читать и читать что-либо еще из потока, то, возможно, использование Scanner - это излишнее количество. Если вы собираетесь продолжать читать только целые числа из потока, возможно, лучше использовать необработанный поток. Но если вы в следующий раз захотите прочитать строку текста, или значение с плавающей запятой, или что-то еще, тогда, вероятно, вам нужен Scanner. Сканер обладает умом для работы с новыми строками. Вы должны сделать это самостоятельно с помощью основного потока.

0
ответ дан Steve 18 March 2019 в 18:11
поделиться

BufferedReader имеет значение

  1. Старее
  2. Большой (8 КБ)
  3. Синхронизирован (замедляет работу)
  4. Читает только строки. [113 ]

Пока сканер

  1. Новый
  2. Малый буфер (1 КБ)
  3. Несинхронизирован
  4. Может анализировать ввод пользователя и читать int, short, byte, float, long и double кроме String.

Обратите внимание, что Scanner при использовании регулярных выражений работает медленно, что делает BufferedReader более быстрым для чтения String.

0
ответ дан Lakshya Srivastava 18 March 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: