Ruby механизирует сообщение с заголовком

Здесь хорошее практическое руководство

существует 7 типов сценариев, чем можно запустить во время Процесса установки:

InstallationCheck: Этот сценарий запускается в начале процесса установки (даже перед шагом Аутентификации). Это может использоваться, чтобы проверить, что Пакет может быть установлен на этом компьютере.

VolumeCheck: Этот сценарий запускается на "Избранном Целевом" шаге. Это используется для определения, на котором объеме может быть установлен Пакет.

предварительный полет: Этот сценарий запускается сразу после того, как пользователь нажал на кнопку "Install".

предварительно устанавливают / предварительное обновление: Этот сценарий запускается после сценария перед полетом, если существует один (в случае единственной установки пакета); иначе сразу после того, как пользователь нажал на кнопку "Install".

, Как Вы видите, существует 2 типа сценариев здесь. Предварительно устанавливание того запускается, когда Пакет никогда не устанавливался (с точки зрения Installer.app), предварительное обновление, каждый запускается, когда Пакет был уже установлен. Чтобы определить, был ли Пакет уже установлен или нет, Installer.app взглянул на содержание следующего каталога:/Library/Receipts. Если существует файл по имени PackageName.pkg в нем, то Пакет был уже установлен, иначе это - первая установка.

постустановка / постобновление: Этот сценарий запускается после того, как файлы в пакете были установлены. Посмотрите (предварительно установите / предварительное обновление) видеть, какой запускается.

послеполетный: Этот сценарий запускается после постустановки / сценарий постобновления или когда пакет был установлен.

9
задан AnimalCode 25 August 2009 в 10:55
поделиться

3 ответа

Они также возникают время от времени, когда я кодирую. Вы можете переместить второй оператор using в другую функцию?

Механизируйте , чтобы переопределить метод post , чтобы пользовательские заголовки передавались частному методу post_form .

Например,

class WWW::Mechanize
  def post(url, query= {}, headers = {})
    node = {}
    # Create a fake form
    class << node
      def search(*args); []; end
    end
    node['method'] = 'POST'
    node['enctype'] = 'application/x-www-form-urlencoded'

    form = Form.new(node)
    query.each { |k,v|
      if v.is_a?(IO)
        form.enctype = 'multipart/form-data'
        ul = Form::FileUpload.new(k.to_s,::File.basename(v.path))
        ul.file_data = v.read
        form.file_uploads << ul
      else
        form.fields << Form::Field.new(k.to_s,v)
      end
    }
    post_form(url, form, headers)
  end
end

agent = WWW::Mechanize.new

agent.post(URL,POSTDATA,{'custom-header' => 'custom'}) do |page|
    p page
end
2
ответ дан 4 December 2019 в 08:52
поделиться

Я нашел этот пост с помощью веб-поиска (я знаю, что два месяца спустя) и просто хотел поделиться другим решением.

Вы можете добавлять собственные заголовки без исправления обезьяны, используя механизировать, используя предварительную версию. крючок подключения:

  agent = WWW::Mechanize.new
  agent.pre_connect_hooks << lambda { |p|
    p[:request]['X-Requested-With'] = 'XMLHttpRequest'
  }

11
ответ дан 4 December 2019 в 08:52
поделиться
ajax_headers = { 'X-Requested-With' => 'XMLHttpRequest', 'Content-Type' => 'application/json; charset=utf-8', 'Accept' => 'application/json, text/javascript, */*'}
params = {'emailAddress' => 'me@my.com'}.to_json
response = agent.post( 'http://example.com/login', params, ajax_headers)

Приведенный выше код работает для меня (Mechanize 1.0) как способ заставить сервер думать, что запрос поступает через AJAX, но, как указано в других ответах, это зависит от того, что сервер ищет, он будет отличаться для разных фреймворков. Комбинации библиотек / js.

Лучше всего использовать плагин Firefox HTTPLiveHeaders или HTTPScoop и посмотреть заголовки запросов, отправленные браузером, и просто попытаться воспроизвести их.

8
ответ дан 4 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

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