2017-02-22 41 views
0

Я пишу сценарий в Ruby, который отправляет путь, включает и исключает фильтр для Adobe CQ CMS. Сначала у меня возникли проблемы с отправкой фильтров с запросом. Итак, я выполнил запрос через POSTMAN, и после того, как он был успешным, я скопировал запрос и использовал его в своем скрипте. Но, поскольку это неправильный способ делать что-то. Я ищу некоторую помощь в преобразовании этого запроса POSTMAN в правильное.Преобразование запроса POSTMAN в соответствующий номер

Вот функция:

def postFilter(postURL,excludeRule,includeRule, auth_code) 
    url = URI(postURL) 

    http = Net::HTTP.new(url.host, url.port) 

    request = Net::HTTP::Post.new(url) 
    request["content-type"] = "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" 
    request["authorization"] = "Basic YWRtaW46YWRtaW4=" 
    request["cache-control"] = "no-cache" 
    request.body = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"rules\"\r\n\r\n#{excludeRule}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"rules\"\r\n\r\n#{includeRule}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" 

    response = http.request(request) 
end 

У меня есть еще одна проблема: Сейчас пароль зашиты (Basic YWRtaW46YWRtaW4 =). Я попытался устранить это, передав пароль как аргумент функции, но это не сработало. Я не могу понять, есть ли семантическая ошибка или логическая ошибка.

Благодарим за помощь.

ответ

1

Для проверки подлинности вы можете использовать Ruby's встроенный метод basic_auth.

заменить это:

request["authorization"] = "Basic YWRtaW46YWRtaW4=" 

с

request.basic_auth(username, password) 

читать об этом здесь https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html

+0

Спасибо. Это помогло мне :). – Blueboye