Джерси СообщениеBodyProviderNotFoundException - PullRequest
0 голосов
/ 13 марта 2019

У меня есть класс:

package com.clevergift.services.payment;

import com.github.woki.payments.adyen.model.*;
import com.google.gson.annotations.SerializedName;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.HashMap;
import java.util.Map;

@XmlRootElement
public class CGPaymentRequest {

    @SerializedName("amount")
    private Amount amount;

    @SerializedName("merchantAccount")
    private String merchantAccount;

    @SerializedName("reference")
    private String reference;

    @SerializedName("additionalData")
    private Map<String, String> additionalData = new HashMap<>();

    // THIS IS SUPPOSED TO SOLVE THE PROBLEM
    public CGPaymentRequest() {

    }

    public void setAdditionalData(Map<String, String> additionalData) {
        this.additionalData = additionalData;
    }

    public Map<String, String> getAdditionalData() {
        return additionalData;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public String getReference() {
        return reference;
    }

    public void setMerchantAccount(String merchantAccount) {
        this.merchantAccount = merchantAccount;
    }

    public String getMerchantAccount() {
        return merchantAccount;
    }

    public void setAmount(Amount amount) {
        this.amount = amount;
    }

    public Amount getAmount() {
        return amount;
    }
}

Я использую конечную точку API здесь:

    Client client = ClientBuilder.newClient();
    WebTarget webTarget
            = client.target(TESTING_PAYS_URL + "authorise");

    Invocation.Builder invocationBuilder
            = webTarget.request(APPLICATION_JSON_TYPE);

    PaymentResponse paymentResponse = invocationBuilder
            .post(Entity.entity(cgPaymentRequest, MediaType.APPLICATION_JSON), PaymentResponse.class);

Это работает абсолютно локально.

В моем файле build.gradle у меня есть:

// https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client
compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.6'

Странно, когда я запускаю это на AWS Elastic Beanstalk, я получаю ошибку:

org.glassfish.jersey.message.internal.WriterInterceptorExecutor: MessageBodyWriter not found for media type=application/json, type=class com.clevergift.services.payment.CGPaymentRequest, genericType=class com.clevergift.services.payment.CGPaymentRequest.

Iпопробовал это решение (добавив пустой конструктор) https://stackoverflow.com/a/33756603/1246159. И все же получаю ту же ошибку.

Я также попытался добавить:

// https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson
compile group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: '2.28'

Но все еще получаю ту же ошибку.Я не совсем уверен, что я могу попробовать дальше ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...