Шаблон скорости создания объекта интерфейса - PullRequest
0 голосов
/ 11 октября 2019

Я настраиваю пользовательский макрос для слияния, в котором используются шаблоны скорости. Одна из моих задач - создать запрос GET для внешнего сайта, но я не могу понять, как создать HttpMethod (org.apache.commons.httpclient). Прежде всего потому, что это интерфейс, поэтому нет Конструктора. Я ограничен только возможностью использовать шаблон Velocity, у меня нет доступа для написания кода Java.

По сути, это код в Java:

HttpClient client = new HttpClient();
HttpMethod method = new GetMethod("https://test.com");

Я пытаюсьчтобы найти способ объявить эти объекты в Velocity.

Я уже объявил HttpClient, но я не уверен, как объявить этот фрагмент кода:

HttpMethod method = new GetMethod("https://test.com")

У меня естьпопытался просто объявить GetMethod:

#set($httpMethod = $content.class.forName("org.apache.commons.httpclient.methods.GetMethod").getConstructor().newInstance())

Но для HttpClient.executeMethod () требуется HttpMethod, а не GetMethod, поэтому результаты не выполняются.

Я пытался сделать что-то вроде:

#set($getMethod = $content.class.forName("org.apache.commons.httpclient.methods.GetMethod").getConstructor().newInstance())

#set($HttpMethod = $content.class.forName("org.apache.commons.httpclient.HttpMethod").newInstance($getMethod))

Я также пытался разыграть это:

#set($casted = $content.class.forName('org.apache.commons.httpclient.HttpMethod').cast($getMethod))

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

В случае, если кто-то запрограммировал на слияние, я знаю, что у слияния есть свой собственный набор пакетов http, но у него точно такая же проблема, описанная выше, если я могу выяснить, как объявить HttpMethod в Velocity, я могу получить всеработает (надеюсь :))

Любая помощь или руководство было бы замечательно, если бы я застрял на этой проблеме некоторое время.

...