具有响应式WebClient的SAP OData调用-转义为“ /”

时间:2019-10-25 15:34:06

标签: url encoding odata sap spring-webclient

当前,我正在使用OData服务与SAP进行集成开发。我的客户端应用程序基于JAVA 8 Spring。

问题:

在我的客户端应用程序中,当我使用spring react webclient执行GET时– SAP无法处理该请求。但是,当我在Firefox-REST客户端中使用相同的URL时,会得到正确的响应。仅当某些URL值中包含“ /”时,才会发生这种情况。

这是我的网址。

http://host:port/sap/opu/odata/sap/Service/Set(RUNTYPE='TEST',DATA ='/ ON / CLOUD')/?sap-client = XXX&spnego = disabled

字段DATA ='/ ON / CLOUD'在这里引起麻烦。 (请注意,当我不使用“ /”时,一切都很好)

我通过手动转义“ /”来尝试此操作:-从REST客户端可以正常工作 http://host:port/sap/opu/odata/sap/Service/Set(RUNTYPE='TEST',DATA ='%2FON%2FCLOUD')/?sap-client = XXX&spnego = disabled

但是,当我使用上述URL从Java客户端执行GET时,SAP抱怨URL格式错误。当我检查SAP中的日志时,由于某种原因,我的客户端程序使用下面的URL进行GET调用 http://host:port/sap/opu/odata/sap/Service/Set(RUNTYPE='TEST',DATA ='%252FON%252FCLOUD')/?sap-client = XXX&spnego = disabled

因此'%2FON%2FCLOUD'在GET调用中转换为'%252FON%252FCLOUD'。

我想转义'%'并使用我发送的所有URL。您能帮我解决这个问题吗?

这是我目前正在使用的代码。

url –是我的URL

{
        Mono<String> mono;
            mono = webClient().get()
                    .uri(url)
                    .accept(MediaType.APPLICATION_JSON)
                    .exchange()
                    .doOnError(e -> { throw new HttpException("Error executing GET request", e); } )
                    .doOnSuccess(onSuccess -> res = onSuccess)
                    .flatMap(clientResponse -> clientResponse.bodyToMono(String.class));
        String body = mono.block();
        log.debug("Response object: {}", res);
        log.info("Get returned: {}", body);
        checkClientResponseCode(res, HttpStatus.OK, body);
        return body;

}

非常感谢您的帮助。

更多信息:

这是JAVA客户端的http跟踪:

获取sap / opu / odata / sap / Service / Set(RUNTYPE ='TEST',DATA ='%25F2ON%25F2CLOUD')/?sap-client = XXX&spnego = disabled 用户代理:ReactorNetty / 0.7.15.RELEASE 主机:hostname:port 接受编码:gzip 接受:application / json 授权:基本AuthorizationKey ==

我实际上是将以下URL发送到Spring WebClient sap / opu / odata / sap / Service / Set(RUNTYPE ='TEST',DATA ='%2F2ON%2F2CLOUD')/?sap-client = XXX&spnego = disabled

我的春季版本:springBootVersion ='2.0.9.RELEASE'

我的SAP版本:SAP FPSL 753版

如果您需要更多信息,请告诉我。

0 个答案:

没有答案