gpt4 book ai didi

java - 未经授权调用汇率服务

转载 作者:行者123 更新时间:2023-12-01 17:50:20 26 4
gpt4 key购买 nike

我正在使用 SAP S/4HANA Cloud SDK 进行 Deep Dive 9:通过 REST API 进行租户和用户感知微服务通信,并且已经在转换器服务和汇率服务之间建立了通信。

Deep Dive 9

但是,当我尝试运行

https://approuter-converter-accountID.cfapps.us10.hana.ondemand.com/converter?sum=100&from=EUR&to=USD

,它返回内部服务器错误。

我检查了 Converter 应用程序中的日志:

2018-06-19T15:42:15.86+1000 [APP/PROC/WEB/0] OUT Destination: ScpCfDestination(destinationType=HTTP, name=app, description=null, propertiesByName={Type=HTTP, ProxyType=Internet, Authentication=AppToAppSSO, URL=https://approuter-exchangerate-<accountid2>.cfapps.eu10.hana.ondemand.com, Name=app})
2018-06-19T15:42:15.86+1000 [APP/PROC/WEB/0] OUT HttpClient: com.sap.cloud.sdk.cloudplatform.connectivity.HttpClientWrapper@5e49142a
2018-06-19T15:42:16.53+1000 [APP/PROC/WEB/0] OUT HttpResponse: HTTP/1.1 200 OK [Cache-Control: no-cache, no-store, must-revalidate, Content-Length: 512, Date: Tue, 19 Jun 2018 05:42:16 GMT, Set-Cookie: locationAfterLogin=%2Fexchange-rate; Path=/; HttpOnly, X-Frame-Options: SAMEORIGIN, X-Request-Id: jil9hsq1, X-Vcap-Request-Id: cbd2ec1a-e318-4a88-56dd-68b6f5183aa2] org.apache.http.conn.BasicManagedEntity@1d9b5223
2018-06-19T15:42:16.53+1000 [APP/PROC/WEB/0] OUT HttpEntity: org.apache.http.conn.BasicManagedEntity@1d9b5223
2018-06-19T15:42:16.53+1000 [APP/PROC/WEB/0] OUT Rates Json: <html><head><link rel="shortcut icon" href="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><script>document.cookie="fragmentAfterLogin="+encodeURIComponent(location.hash)+";path=/";location="https://p1942866225trial.authentication.eu10.hana.ondemand.com/oauth/authorize?response_type=code&client_id=sb-exchangerate-<accountId2>!t3509&redirect_uri=https%3A%2F%2Fapprouter-exchangerate-<accountId2>.cfapps.eu10.hana.ondemand.com%2Flogin%2Fcallback"</script></head></html>

我可以看到HttpResponse成功了。但 Rates Json(返回实体)似乎不起作用。

我已按照博客中的所有步骤进行操作,但不知道为什么它会返回这样的错误。您能建议一下可能是什么原因吗?

更新:我在场景中使用了一名 S 用户和一名 P 用户。

在我更改并使用 2 个 P 用户后,我可以在转换器日志中看到响应。使用S用户有什么问题?

但是,响应不会显示在浏览器中。相反,它显示错误:内部服务器错误并在日志中写入:

{ "written_at":"2018-06-21T02:25:30.359Z","written_ts":39256458075633,"component_id":"e8cb8a72-6ca9-4bcb-86db-c4a3a6addfe0","component_name":"converter","DCComponent":"","organization_name":"-","component_type":"application","space_name":"dev","component_instance":"0","organization_id":"-","correlation_id":"-","CSNComponent":"","space_id":"a17affa3-0b14-4c07-af21-6a2afd1f40bd","Application":"converter","container_id":"10.0.137.152","type":"log","logger":"org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[com.mycompany.ConverterServlet]","thread":"http-bio-0.0.0.0-8080-exec-3","level":"ERROR","categories":[],"msg":"Servlet.service() for servlet [com.mycompany.ConverterServlet] in context with path [] threw exception","stacktrace":["java.io.IOException: Attempted read from closed stream."," at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:165)","  at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135)"," at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)","    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)"," at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)"," at java.io.InputStreamReader.read(InputStreamReader.java:184)","    at java.io.Reader.read(Reader.java:140)","  at org.apache.http.util.EntityUtils.toString(EntityUtils.java:225)","   at org.apache.http.util.EntityUtils.toString(EntityUtils.java:306)","   at com.mycompany.ConverterServlet.doGet(ConverterServlet.java:65)","    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)","  at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)","  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:83)","  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)","    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at com.sap.cloud.sdk.cloudplatform.servlet.RequestContextServletFilter$1.execute(RequestContextServletFilter.java:215)","   at com.sap.cloud.sdk.cloudplatform.servlet.Executable.call(Executable.java:19)","   at com.sap.cloud.sdk.cloudplatform.servlet.Executable.call(Executable.java:9)","    at com.sap.cloud.sdk.cloudplatform.servlet.RequestContextCallable.call(RequestContextCallable.java:78)","   at com.sap.cloud.sdk.cloudplatform.servlet.RequestContextServletFilter.doFilter(RequestContextServletFilter.java:217)","    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at com.sap.cloud.sdk.cloudplatform.security.servlet.HttpCachingHeaderFilter.doFilter(HttpCachingHeaderFilter.java:52)","    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at com.sap.cloud.sdk.cloudplatform.security.servlet.HttpSecurityHeadersFilter.doFilter(HttpSecurityHeadersFilter.java:37)","    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)","  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)","    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)","   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)","  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)","   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)","    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)","   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)","  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)","    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)","  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)","  at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)"," at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)"," at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)","   at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)"," at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)"," at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)"," at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)","   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)","   at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)","   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)","    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)"," at com.sap.xs.java.valves.ErrorReportValve.invoke(ErrorReportValve.java:66)","  at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:191)","   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)"," at com.sap.xs.security.UserInfoValve.invoke(UserInfoValve.java:23)","   at com.sap.xs.statistics.tomcat.valve.RequestTracingValve.invoke(RequestTracingValve.java:43)","    at com.sap.xs.logging.catalina.RuntimeInfoValve.invoke(RuntimeInfoValve.java:40)"," at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)","   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)","   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)","   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)","   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)","  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)","   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)","   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)","    at java.lang.Thread.run(Thread.java:836)"] }

最佳答案

请确保所调用的应用程序(汇率)得到正确保护。为此,请直接通过应用程序路由器调用应用程序:汇率应用程序路由器 URL/汇率,并在输入凭据后检查是否获得正确的负载。

如果没有,请根据您的账户数据检查并修改您的xs-security-exchangerate.json和manifest-approuter-exchangerate.yml。如果发生更改,请重新运行汇率服务的部署和服务绑定(bind)。

最诚挚的问候,叶卡捷琳娜

关于java - 未经授权调用汇率服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com