【问题标题】:from Postman i'm able to get valid response body from an API, but from Application it throwing error for the same url从邮递员我能够从 API 获得有效的响应正文,但从应用程序它为相同的 url 抛出错误
【发布时间】:2022-01-13 05:37:51
【问题描述】:

0.2 Tomcat 9.0.53 当我将应用程序部署到外部 tomcat 服务器时抛出错误。
如果我作为 Springboot 应用程序运行(具有相同的配置),则没有错误。 我也可以通过邮递员访问相同的 api。 http://localhost:9080/api/authenticate POST方法

    {"username":"User","password":"user"}

code:
URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            // Setting basic post request
            con.setRequestMethod("POST");
            con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
            
            con.setRequestProperty("Content-Type", "application/json");
            // Send post request
            con.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
            wr.writeBytes(jsonData);
            wr.flush();
            wr.close();
            Logger.info("nSending 'POST' request to URL : " + url);
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String output;
            while ((output = in.readLine()) != null) {
                response.append(output);
            }
            Logger.info(response.toString());
            in.close();


Error:

> 12-08-2021 @ 2:04:36PM : ERROR ---------->
> http://localhost:9080/api/authenticate
> [com.edge.service.common.ApiHandler.post:63 <
> com.edge.service.common.ApiHandler.parseAsObject:86] 
> java.io.FileNotFoundException: http://localhost:9080/api/authenticate
>   at
> java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1909)
>   at
> java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
>   at com.edge.service.common.ApiHandler.post(ApiHandler.java:55)  at
> com.edge.service.common.ApiHandler.parseAsObject(ApiHandler.java:86)
>   at
> com.edge.service.login.LoginService.authenticateuser(LoginService.java:44)
>   at
> com.edge.controller.login.LoginController.authenticate(LoginController.java:66)
>   at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)   at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.base/java.lang.reflect.Method.invoke(Method.java:566)   at
> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
>   at
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
>   at
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
>   at
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
>   at
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
>   at
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
>   at
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
>   at
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
>   at
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
>   at
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
>   at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)     at
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
>   at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

【问题讨论】:

  • 请添加有问题的相关代码
  • 用代码更新了描述
  • 那么这个http://localhost:9080/api/authenticate 文件来自哪里,它真的存在吗?为什么不是eplasapi/authenticate
  • 事实上两者都是相同的,api 或 epalsapi

标签: java spring-boot java-11


【解决方案1】:

我能够解决问题,上下文根存在问题,已清理并重新复制

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

我的应用程序开始工作,但我知道这是一种解决方法。

当我的 API 在没有上下文根 (http://localhost:9080/authenticate) 的情况下部署时,它可以正常工作。但是使用上下文根(http://localhost:9080/epalsapi/authenticate),我的 UI 应用程序抛出了上述问题。

java.io.FileNotFoundException: http://localhost:9080/api/authenticate 在 java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0

【讨论】:

  • 请将您对问题的答案之一标记为已接受的答案。
猜你喜欢
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2019-09-10
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多