我正在Lagom POC上通过自定义标头将POST请求发送到 Non Lagom服务。在我的情况下,我试图击中postman-echo以测试自定义标头。 但是,尽管我进行了相应的代码更改,但看起来标题没有设置:
public CompletionStage<DsapAuthorizationResponse> hitAPI(AuthorizationRequest request) {
DsapWSRequest dsapWSRequest = new DsapWSRequest();
dsapWSRequest.username = request.username;
dsapWSRequest.password = request.password;
CompletionStage<DsapAuthorizationResponse> dsapresponse = dsapExternalService
.authenticate()
.handleRequestHeader(requestHeader -> {
requestHeader.withHeader("Authorization","Basic mncndsjna");
System.out.println("My Headers>>>>>>>> " + requestHeader);
return requestHeader;
})
.handleResponseHeader((responseHeader,b) -> {
System.out.println("RESPonse Header >>>>>>> : "+responseHeader);
return b;
})
.invoke(dsapWSRequest);
return dsapresponse;
}
在以上代码头中,未在请求中设置授权。我没有在我的POJO中正确映射的回显中获得此标头。
这是我GitHub上的完整代码 https://github.com/sourabhsar/Lagom-Unmanaged-Service-Demo/tree/poc/lagom-request-response
我遵循了此处提到的步骤: https://groups.google.com/forum/#!topic/lagom-framework/yvKmqvtZWFs
,并且还关注了其他一些博客/文章。 但是,到目前为止,我还没有发现他们正在使用自定义标头向非托管外部服务发送请求的任何博客。我不确定我的代码有什么问题。
答案 0 :(得分:1)
requestHeader.withHeader
返回带有添加的标头的 new 对象,但是您编写的代码返回原始的requestHeader
对象。通常,许多Lagom API都遵循使用不可变对象的原则,其方法返回的是经过修改的新实例,而不是更改调用该方法的实例。
尝试一下:
.handleRequestHeader(requestHeader -> {
RequestHeader modifiedRequestHeader =
requestHeader.withHeader("Authorization","Basic mncndsjna");
System.out.println("My Headers>>>>>>>> " + modifiedRequestHeader);
return modifiedRequestHeader;
})