账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    SpringCloud的feign为何return对象为xml格式?
    367
    0

    服务提供者和服务消费者都是统一SpringBoot项目
    服务提供者我就不展示了,直接贴消费者的:

    /**
     * Created by yhn on 2017/12/2.
     */
    @RestController
    @Slf4j
    public class EventController {
        @Autowired
        private EventService eventService;
        @GetMapping("/myTask")   //see my TaskList
        public String myTask(@RequestParam("openid") String openid,
                              @RequestParam(value = "page",defaultValue ="1" ) String page,
                              @RequestParam(value = "size",defaultValue ="7") String size){
            PageVO pageVO  = new PageVO();
            pageVO.setPage(Long.parseLong(page));
            pageVO.setSize(Long.parseLong(size));
            PageVO result = eventService.findEventByOpenid(openid,pageVO);
            log.info("result={}",result);
            return ObjectToJSON.getJSON(result);  //工具类转为json格式
        }
    }

    @RestController不是就把对象转为json了吗?去页面访问竟然变成了xml格式的数据

    pom配置:

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <!--ribbon的pom配置-->
            <!--<dependency>-->
                <!--<groupId>org.springframework.cloud</groupId>-->
                <!--<artifactId>spring-cloud-starter-ribbon</artifactId>-->
            <!--</dependency>-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency><!-- 该依赖必加,里面有sping对schedule的支持 -->
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
            </dependency>
            <!--实现路径配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>2.3.0</version>
            </dependency>
            <!--Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-feign</artifactId>
            </dependency>
            <!--熔断器Hystrix-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-hystrix</artifactId>
            </dependency>
            <!--Hystrix Dashboard (断路器:Hystrix 仪表盘)-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
            </dependency>
            <!--=========================================-->
            <dependency>
                <groupId>com.github.binarywang</groupId>
                <artifactId>weixin-java-mp</artifactId>
                <version>2.8.0</version>
            </dependency>
            <dependency>
                <groupId>QRCode</groupId>
                <artifactId>QRCode</artifactId>
                <version>3.0</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
                <groupId>com.googlecode.json-simple</groupId>
                <artifactId>json-simple</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>net.sf.json-lib</groupId>
                <artifactId>json-lib</artifactId>
                <version>2.4</version>
                <classifier>jdk15</classifier>
            </dependency>

    Application启动类

    package com.example.demo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.netflix.feign.EnableFeignClients;
    import org.springframework.cloud.netflix.hystrix.EnableHystrix;
    import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
    @SpringBootApplication
    @EnableDiscoveryClient   //通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean
    @EnableFeignClients    //@EnableFeignClients注解开启Feign的功能
    @EnableHystrix   //注解开启Hystrix
    @EnableHystrixDashboard    //开启hystrixDashboard【Hystrix Dashboard (断路器:Hystrix 仪表盘)】
    public class DemoApplication{
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 快来救我 普通会员 1楼

      SpringCloud的Feign默认返回的是JSON格式。Feign是一个基于Java的客户端调用框架,它使用JSON格式进行传输。

      如果你想要Feign返回XML格式,你需要在发送请求时指定Content-Type头为application/xml。例如:

      java FeignRequest request = Feign.builder() .targetClass(MyService.class) .path("myPath") .requestBody(new Marshaller<MyResponse>() { @Override public MyResponse marshall(MyResponse entity) throws IOException { return entity; } }) .build();

      在这个例子中,MyResponse是你的实体类,Marshaller是你的 Marshalling 层,它实现了org.springframework.web.client兽厂.MarshallingObjectConverter接口。这个接口让你可以指定将对象转换为JSON还是XML。

      需要注意的是,发送的XML字符串中不能包含特殊字符,比如空格、逗号、引号等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部