2015-07-13 148 views
0

我試圖檢索json對象,然後使用其中的信息。但是在Json請求的時候,它拋出了運行時異常。 這是代碼java.lang.RuntimeException:失敗:HTTP錯誤代碼:500

public URL getURL(){     

      try{      
       URL domain = new URL("http.....");     
       URL url = new URL(domain + cookieValue);      
       System.out.println(url);      
       return url; 
      } 
      catch (MalformedURLException ex) {     
       log_loginBean.logger(ex); 
      } 

      return null;  
     } 

    public static JSONObject JSONRequest(URL url_comp){ 

       try {       
        URL url = url_comp; 
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
        conn.setRequestMethod("GET"); 
        conn.setRequestProperty("Accept", "application/json"); 

        if (conn.getResponseCode() != 200) { 
         throw new RuntimeException("Failed : HTTP error code : " 
           + conn.getResponseCode()); 
        } 

        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

        String jsonText = readAll(br); 
        JSONObject json = new JSONObject(jsonText);  
        conn.disconnect();      
        return json; 

        } 
        catch (MalformedURLException e) {    
         log_loginBean.logger(e);    
        } 
        catch (IOException e) {     
         log_loginBean.logger(e); 

        } 
        catch(JSONException e) {      
         log_loginBean.logger(e); 
        } 

       return null;   
      } 

     // This will extract some particular information (UserId, Email) from the extracted JSON Object. 

      public void parseJSON(){ 
       try{ 
       JSONObject obj = JSONRequest(getURL()); 
       userId = obj.getString("UserID"); 
       Email = obj.getString("Email");     

       } 
       catch(JSONException e){ 
        log_loginBean.logger(e); 
       } 
      } 

這是我的堆棧跟蹤

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/CDCandTR] threw exception [Failed : HTTP error code : 500] with root cause 
java.lang.RuntimeException: Failed : HTTP error code : 500 
      at com.walmart.cdctraffic.login.LoginBean.JSONRequest(LoginBean.java:183) 
      at com.walmart.cdctraffic.login.LoginBean.parseJSON(LoginBean.java:226) 
      at com.walmart.cdctraffic.login.LoginBean.login(LoginBean.java:266) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:606) 
      at org.apache.el.parser.AstValue.invoke(AstValue.java:278) 
      at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273) 
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
      at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:128) 
      at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2603) 
      at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108) 
      at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:118) 
      at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2187) 
      at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2135) 
      at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:289) 
      at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247) 
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107) 
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) 
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) 
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
      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.walmart.cdctraffic.utilities.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:30) 
      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:203) 
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610) 
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
      at com.walmart.infraweb.valves.SecureErrorReportValve.invoke(SecureErrorReportValve.java:102) 
      at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:221) 
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
      at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2440) 
      at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2429) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
      at java.lang.Thread.run(Thread.java:745) 

所以現在我無法找到它爲什麼拋出HTTP 500錯誤以及如何解決這一切呢? 然後在IF語句後,我是否需要放入else並最終斷開連接? 請幫忙。

+1

請提供URL以及 –

+0

@ShrinivasShukla - PFA的URL。 –

+0

@ChiragKawariya查看'com.walmart.cdctraffic.login.LoginBean.JSONRequest'的第183行,在這一行失敗了,你在那行做了什麼?那時可能出現什麼問題(運行時異常)? – brso05

回答

0

可以返回幾乎任何原因的500 Internal Server Error。最常見的是我不明白你的要求

下一個最常見的是我知道你做錯了什麼,但我不能將這種知識一直傳送回

我最近遇到的這個問題最終證明我發送的請求中包含一個被服務器後面的數據庫模式拒絕的值。當它需要0/1時,我正在發送「文本」。

+0

我可能誤解了這個問題,但是他不是要求_why_在他的特殊情況下是否返回HTTP 500? –

+0

@JanZyka - 可能 - 我基本上說*幾乎任何東西都可能導致這種情況* 。 – OldCurmudgeon

1

根據所提供的堆棧跟蹤我懷疑你沒有正確的,因爲它清楚裏面LoginBean某處失敗傳遞登錄信息:

com.walmart.cdctraffic.login.LoginBean.JSONRequest(LoginBean.java:183) 
相關問題