小编Mad*_*vap的帖子

在 FeignClient 中处理 HTTP 重定向

FeignClient 是一个非常漂亮的工具,但不幸的是,如果您需要做一些与 Spring 之神预期稍有不同的事情,那么您就陷入了痛苦的世界。

当前案例:我与外部第三方 REST 服务合作,该服务具有关于 REST 的有趣概念。特别是,如果您向他们发送正确的 JSON,他们会在正文中返回 HTTP 302 和 JSON。

不用说,FeignClient 真的非常不喜欢这种恶作剧。我的界面:

@FeignClient(value = "someClient", configuration = SomeClientDecoderConfiguration.class)
public interface SomeClient {
    @RequestMapping(method = RequestMethod.POST, path = "${someClient.path}",
    produces = MediaType.APPLICATION_JSON_VALUE)
    JsonOrderCreateResponse orderCreate(JsonOrderCreateRequest request, @RequestHeader("Authorization") String authHeader);
}
Run Code Online (Sandbox Code Playgroud)

我已经有了自定义配置和错误解码器,但这些仅适用于 HTTP 4xx 和 5xx。如果系统遇到302,结果是这样的:

http://pastebin.com/raw/cGKWc4yg

我如何才能防止这种情况并强制 FeignClient 像处理 200 一样处理 302?

spring netflix-feign

5
推荐指数
1
解决办法
1万
查看次数

Java无法找到ResteasyClient,尽管所有内容都在pom中占了一席之地

在我的原型项目中,我致力于实现非常简单的REST服务 - 服务器(后端)和客户端,实际上也是服务器(前端).后端服务器工作正常,但与客户端我遇到了非常非常奇怪的问题.在Eclipse中,我有一个项目"frontend",它有一个名为FrontEndPageBean.java的bean:

package org.mader.demo.frontend;

import javax.faces.bean.*;
import javax.ws.rs.core.*;

/** Bean to show off frontend handling of REST. */
@ManagedBean
public class FrontEndPageBean
{
  /**
   * Resolve data from backend through REST service.
   * @return Data as text.
   */
  public String getRestData()
  { // Retrieve RESTful service using client API from JAX-RS 2.0

    ResteasyClient client = new ResteasyClientBuilder().build();
    ResteasyWebTarget target = client.target("http://127.0.0.1:8080/backend/rest/data/1");

    Response response = target.request().get();
    // Read output in string format
    String value = response.readEntity(String.class);
    System.out.println(value);
    response.close();

    return value; …
Run Code Online (Sandbox Code Playgroud)

java rest maven

0
推荐指数
1
解决办法
3918
查看次数

标签 统计

java ×1

maven ×1

netflix-feign ×1

rest ×1

spring ×1