我正在使用功能区和假装连接到 api 进行一些测试。该 api 使用 spring boot 运行:
@Controller
@EnableAutoConfiguration
public class MovieService {
@RequestMapping("/")
@ResponseBody
List<String> findAllMovies() {
System.out.println("finding all movies");
return Arrays.asList("start wars", "inception", "the martian");
}
public static void main(String[] args) throws Exception {
SpringApplication.run(MovieService.class, args);
}
}
这是我使用的客户端代码: feign 接口:
public interface MovieService {
@RequestLine("GET /")
List<String> findAllMovies();
}
当我单独使用 feign 时,一切正常:
public class MovieClient {
public static void main(String args[]) {
MovieService movieService = Feign.builder()
.decoder(new GsonDecoder())
.target(MovieService.class, "http://localhost:8080");
System.out.println(movieService.findAllMovies());
}
}
但是当我也使用功能区时:
public class MovieClient {
public static void main(String args[]) {
ConfigurationManager.getConfigInstance().setProperty("MovieService.ribbon." + CommonClientConfigKey.MaxAutoRetriesNextServer, "3");
ConfigurationManager.getConfigInstance().setProperty("MovieService.ribbon." + CommonClientConfigKey.ListOfServers, "localhost:8080");
MovieService movieService = Feign.builder().client(RibbonClient.create()).target(MovieService.class, "https://MovieService");
System.out.println(movieService.findAllMovies());
}
}
我在 Spring Boot 服务器日志记录中收到以下错误:
2016-01-06 21:26:50.670 INFO 61353 --- [nio-8080-exec-1] o.a.coyote.http11.Http11NioProcessor : Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.ArrayIndexOutOfBoundsException: -64
at org.apache.coyote.http11.AbstractNioInputBuffer.parseHeader(AbstractNioInputBuffer.java:474) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
at org.apache.coyote.http11.AbstractNioInputBuffer.parseHeaders(AbstractNioInputBuffer.java:381) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1025) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) [tomcat-embed-core-8.0.30.jar:8.0.30]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-embed-core-8.0.30.jar:8.0.30]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-embed-core-8.0.30.jar:8.0.30]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_05]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_05]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.30.jar:8.0.30]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_05]
看起来我在我的 Spring Boot 应用程序中收到了以下标题:
2016-01-06 21:43:52.606 DEBUG 61415 --- [nio-8080-exec-9] o.a.c.http11.InternalNioInputBuffer : Received [ÏËV|jà^kgáxþæèðMn¨{oý²]Aì7FÀ#À'<À%À)g@À À/ÀÀ32ÀÀÀÀÀ+À/À-À1¢ÀÀ
ÿ\
42
知道我做错了什么吗?我错过了什么吗?