Я использую Citrus для автоматизации наших сервисов RESTful, где входной параметр service1 передается на вход service2 после URLEncoding.Анализ JSON-ответа с использованием структуры Citrus для URLEncode
Ниже приведен фрагмент кода, чтобы объяснить, как я пытался, но каким-то образом не смог URLEncode, поверх конструктора.traceVariables().
Из-за ограничения (возможно, известного!), Что параметры ответа не могут быть переданы вне контекста, мне пришлось вызвать несколько вызовов send(), receive(), определенных в том же методе Gherkin, что и ниже. Я могу напечатать переменную myVar (извлеченную из payLoad), используя designer.traceVariables(), но не смог обработать &, чтобы продолжить ее, чтобы перейти к следующему вызову службы.
@When("^I call CPAuth service for ChasePay$")
public void i_call_CPAuth_service_for_ChasePay() throws Throwable {
designer.send("CitrusContext")
.messageType(MessageType.JSON)
.header(X_JPMC_CSRF_TOKEN_HEADER, csrfToken)
.header(HTTP.CONTENT_TYPE, APPLICATION_JSON)
.header(COOKIE, ConnRoutePNames.DEFAULT_PROXY + "=" + proxy)
.header("citrus_endpoint_uri", authUrl +"/auth/fcc/login")
.message(new HttpMessage("<large_string=no_issues_here>").method(HttpMethod.POST));
designer.receive("CitrusContext").messageType(MessageType.JSON)
.validate("$.response", "secauth")
.validate("$.newstoken", false)
.validate("$.smtoken", "void")
.extractFromPayload("$.spid", "myVar");
String request = URLEncoder.encode("appStoreBundleId=com.testmerchant.sampleapp&version=APP%2BBUILD%2BVERSION&channelId=MPD&spid=**${myVar}**&type=json&chasePayMerchantId=1390xxx", CharEncoding.UTF_8);
System.out.println("request: "+request);
designer.send("CitrusContext")
.messageType(MessageType.JSON)
.header(X_JPMC_CSRF_TOKEN_HEADER, csrfToken)
.header(HTTP.CONTENT_TYPE, APPLICATION_JSON)
.header(COOKIE, ConnRoutePNames.DEFAULT_PROXY + "=" + proxy)
.header("citrus_endpoint_uri", hostUrl +"/pwc/provisioning/pos/otp/contact/v20160313/list.action")
.message(new HttpMessage(request).method(HttpMethod.POST));
Результат: Перед кодированием: (. Это должно быть строкой, который должен быть закодирован) MSZp2V/czcKsxej + Q04Da/QeVlo = MCwCFAqrBN/6/J8WZENecE7JQlEODnecAhQCcnXGBjMoiQ7deunlyXKacFo/LQ == После кодирования:% 3D% 24 % 7BmyVar% 7D% 26
Любая помощь будет принята с благодарностью, спасибо.