首页 > 解决方案 > Lagom 发送自定义标头

问题描述

我正在使用 Lagom POC 向具有自定义标头的非 lagom 服务发送 POST 请求。就我而言,我正在尝试使用 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 中正确映射的 echo 中获取此标头。

这是来自我的 GitHub 的完整代码 https://github.com/sourabhsar/Lagom-Unmanaged-Service-Demo/tree/poc/lagom-request-response

我按照此处提到的步骤操作: https ://groups.google.com/forum/#!topic/lagom-framework/yvKmqvtZWFs

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

标签: javalagom

解决方案


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

尝试这个:

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

推荐阅读