![](/img/trans.png)
[英]Micronaut controller test - DefaultHttpClient (RxHttpClient) returns null body when using exchange instead of retrive
[英]Micronaut RxHttpClient null
我正在测试RxHttpClient功能。
我创建了一个运行在http://localhost:8086
上的简单服务,可以从运行在http://localhost:8080
上的另一个服务访问该服务。 在遵循micronaut文档初始化RxHttpClient之后,我看到RxHttpClient仍然为NULL。 这是客户端的实现
import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;
import io.reactivex.Flowable;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class TestClient {
@Inject
@Client("http://localhost:8086")
RxHttpClient httpClient;
public Flowable<String> getRandomName(){
System.out.println("getRandomName invoked => " + httpClient);
return Flowable.just("test");
}
}
我可能在这里缺少什么,关于这里可能缺少什么的任何建议?
很难看到什么错了,而没有看到一个演示问题的项目,但是我希望项目中配置错误,或者您是自己创建bean的实例,而不是让DI容器为您创建它。
请参阅https://github.com/jeffbrown/mithrandirclient上的项目。
package mithrandirclient;
import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class TestClient {
@Inject
@Client("http://localhost:8086")
RxHttpClient httpClient;
public String getRandomName(){
System.out.println("getRandomName invoked => " + httpClient);
return "Some Random Name";
}
}
package mithrandirclient;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
@Controller("/demo")
public class DemoController {
private TestClient testClient;
public DemoController(TestClient testClient) {
this.testClient = testClient;
}
@Get("/")
public String index() {
return testClient.getRandomName();
}
}
当我向控制器发送请求时,得到了预期的结果:
$ curl http://localhost:8080/demo
Some Random Name
服务器控制台显示客户端实际上不是null
:
getRandomName invoked => io.micronaut.http.client.DefaultHttpClient@39ce2d3d
更新:
https://github.com/jeffbrown/mithrandirclient/commit/0ba0216bca4f31ee3ff296579b829ab4615fa6db上的提交使代码更像原始问题中的代码,但结果是相同的。 注入确实起作用,并且客户端不为null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.