我正在使用自定义标头向非Lagom服务发送POST请求的Lagom POC。在我的情况下,我试图击中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

并且还关注了其他一些博客/文章。
但是到目前为止,我还没有发现任何博客正在使用自定义标头向非托管外部服务发送请求。我不确定我的代码有什么问题。

最佳答案

requestHeader.withHeader返回带有添加的标头的新对象,但是您编写的代码返回原始的requestHeader对象。通常,许多Lagom API遵循使用不可变对象的原理,其方法返回的是经过修改的新实例,而不是更改调用该方法的实例。

尝试这个:

.handleRequestHeader(requestHeader -> {
    RequestHeader modifiedRequestHeader =
        requestHeader.withHeader("Authorization","Basic mncndsjna");
    System.out.println("My Headers>>>>>>>> " + modifiedRequestHeader);
    return modifiedRequestHeader;
})

10-08 14:31