如何使用 java cxf 创建客户端 TGT
how to create client TGT with java cxf
我是 java rest CXF 客户端的新手。我将向远程服务器发出各种请求,但首先我需要创建一个 Ticket Granting Ticket (TGT)。我查看了各种来源,但找不到解决方案。我将创建一个 TGT 的服务器请求如下:
- Content-Type:文本作为参数,应用程序/x-www-form-urlencoded 作为值
- 用户名
- 密码
当我使用 Postman 使用示例 URL 发出此请求时,我创建了 TGT,如下所示。 (URL 是示例)。但在下面的代码中,我发送了请求,但响应为空。你能帮我解决一下吗?
示例URL 我使用Postman 以POST 方法发出请求: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();
您需要做一个 POST,但您没有指定您的负载是什么样的?
你的 RequestDTO 和 ResponseDTO 必须有 getters/setters.
使用 JAX-RS 2.0 客户端的示例。
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();
如果您将来自 POSTMAN 的 POST 请求复制为 cURL 请求,也有其他帮助。查看您的请求与 POSTMAN 之间的差异可能会有所帮助。也许 extra/different 邮件头是由邮递员添加的?
文档:https://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-JAX-RS2.0andCXFspecificAPI
类似的 Whosebug:
我是 java rest CXF 客户端的新手。我将向远程服务器发出各种请求,但首先我需要创建一个 Ticket Granting Ticket (TGT)。我查看了各种来源,但找不到解决方案。我将创建一个 TGT 的服务器请求如下:
- Content-Type:文本作为参数,应用程序/x-www-form-urlencoded 作为值
- 用户名
- 密码
当我使用 Postman 使用示例 URL 发出此请求时,我创建了 TGT,如下所示。 (URL 是示例)。但在下面的代码中,我发送了请求,但响应为空。你能帮我解决一下吗?
示例URL 我使用Postman 以POST 方法发出请求: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();
您需要做一个 POST,但您没有指定您的负载是什么样的?
你的 RequestDTO 和 ResponseDTO 必须有 getters/setters.
使用 JAX-RS 2.0 客户端的示例。
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();
如果您将来自 POSTMAN 的 POST 请求复制为 cURL 请求,也有其他帮助。查看您的请求与 POSTMAN 之间的差异可能会有所帮助。也许 extra/different 邮件头是由邮递员添加的?
文档:https://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-JAX-RS2.0andCXFspecificAPI
类似的 Whosebug: