Java >> Java tutorial >  >> Java

hvordan man opretter klient TGT med java cxf

Jeg er ny i Java rest CXF-klienten. Jeg vil lave forskellige anmodninger til en ekstern server, men først skal jeg oprette en Ticket Granting Ticket (TGT). Jeg kiggede gennem forskellige kilder, men jeg kunne ikke finde en løsning. Serveranmodningerne om, at jeg vil oprette en TGT er som følger:

  • Indholdstype:tekst som parameter, applikation / x-www-form-urlencoded som værdi
  • brugernavn
  • adgangskode

Jeg opretter TGT, når jeg laver denne anmodning med eksempel-URL'en som nedenfor ved hjælp af Postman. (URL er et eksempel). Men i koden nedenfor sender jeg anmodningen, men svaret er null. Kan du hjælpe mig med løsningen?

Eksempelwebadressen, som jeg laver en anmodning med POST-metoden ved hjælp af Postman:https://test.service.com/v1/tickets?format=text&username=user&password=pass

List<Object> providers = new ArrayList<Object>();
providers.add(new JacksonJsonProvider());
        
WebClient client = WebClient.create("https://test.service.com/v1/tickets?format=text&username=user&password=pass", providers);
          
Response response = client.getResponse();

Svar

Du skal lave et POST, men du har ikke specificeret, hvordan din nyttelast ser ud?

Din RequestDTO og ResponseDTO skal have getters/setters.

Et eksempel på brug af JAX-RS 2.0 Client.

Client client = ClientBuilder.newBuilder().register(new JacksonJsonProvider()).build();
    WebTarget target = client.target("https://test.service.com/v1/tickets");
    target.queryParam("format", "text");
    target.queryParam("username", "username");
    target.queryParam("password", "password");
    Response response = target.request().accept(MediaType.APPLICATION_FORM_URLENCODED).post(Entity.entity(yourPostDTO,
            MediaType.APPLICATION_JSON));
    YourResponseDTO responseDTO = response.readEntity(YourResponseDTO.class);
    int status = response.getStatus();

Også noget andet, der kan hjælpe, er, hvis du kopierer POST-anmodningen fra POSTMAN som cURL-anmodning. Det kan måske hjælpe at se forskellene mellem din anmodning og POSTMAN. Måske tilføjes ekstra/forskellige overskrifter af postbud?

Dokumentation:https://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-JAX-RS2.0andCXFspecificAPI

Lignende Stackoverflow:Er der en måde at konfigurere ClientBuilder POST-anmodningen på, som gør det muligt for den at modtage både en returkode OG et JSON-objekt?


Java tag