CamelHttpResponseCode is null on service error










0















I'm new to camel and writing a small POC to implement in an existing application. Application takes a xml request as input which contains the requested services and relevant data. It then calls those services one by one.
When a service is called successfully then I retrieve the http response code in a processor like below and do further logic:



Object code = exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE);
if(null!=code && code instanceof Integer)

responseCode = (Integer) code;



In success case, responseCode received = 201



Based on the responseCode, I know if the service call is successful and then proceed with the next one.



However, I tried to produce the negative scenario by making the service url incorrect and can't see the http response code anymore:



Original service url - http://xxx:0000/.../.../.../.../...



Modified service url - http://xxx:0000/.../.../.../.../abc/...



In failure case, responseCode received = null



In postman, I get the below error:




org.apache.camel.http.common.HttpOperationFailedException: HTTP
operation failed invoking http://xxx:0000/.../.../.../.../abc/...
with statusCode: 404 at
org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:274)
at
org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:183)




I don't know why exchange doesn't contain the http response code when it's present in the error message in the postman.



I'm using onException to handle any exceptions and then calling a processor to process the flow further:



<camel:onException>
<camel:exception>java.lang.Exception</camel:exception>
<camel:process ref="xxxProcessor" />
</camel:onException>


I think I can consider responseCode=null as failure and proceed with my logic but want to understand why response code is being returned as null.



Thanks in advance!










share|improve this question




























    0















    I'm new to camel and writing a small POC to implement in an existing application. Application takes a xml request as input which contains the requested services and relevant data. It then calls those services one by one.
    When a service is called successfully then I retrieve the http response code in a processor like below and do further logic:



    Object code = exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE);
    if(null!=code && code instanceof Integer)

    responseCode = (Integer) code;



    In success case, responseCode received = 201



    Based on the responseCode, I know if the service call is successful and then proceed with the next one.



    However, I tried to produce the negative scenario by making the service url incorrect and can't see the http response code anymore:



    Original service url - http://xxx:0000/.../.../.../.../...



    Modified service url - http://xxx:0000/.../.../.../.../abc/...



    In failure case, responseCode received = null



    In postman, I get the below error:




    org.apache.camel.http.common.HttpOperationFailedException: HTTP
    operation failed invoking http://xxx:0000/.../.../.../.../abc/...
    with statusCode: 404 at
    org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:274)
    at
    org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:183)




    I don't know why exchange doesn't contain the http response code when it's present in the error message in the postman.



    I'm using onException to handle any exceptions and then calling a processor to process the flow further:



    <camel:onException>
    <camel:exception>java.lang.Exception</camel:exception>
    <camel:process ref="xxxProcessor" />
    </camel:onException>


    I think I can consider responseCode=null as failure and proceed with my logic but want to understand why response code is being returned as null.



    Thanks in advance!










    share|improve this question


























      0












      0








      0








      I'm new to camel and writing a small POC to implement in an existing application. Application takes a xml request as input which contains the requested services and relevant data. It then calls those services one by one.
      When a service is called successfully then I retrieve the http response code in a processor like below and do further logic:



      Object code = exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE);
      if(null!=code && code instanceof Integer)

      responseCode = (Integer) code;



      In success case, responseCode received = 201



      Based on the responseCode, I know if the service call is successful and then proceed with the next one.



      However, I tried to produce the negative scenario by making the service url incorrect and can't see the http response code anymore:



      Original service url - http://xxx:0000/.../.../.../.../...



      Modified service url - http://xxx:0000/.../.../.../.../abc/...



      In failure case, responseCode received = null



      In postman, I get the below error:




      org.apache.camel.http.common.HttpOperationFailedException: HTTP
      operation failed invoking http://xxx:0000/.../.../.../.../abc/...
      with statusCode: 404 at
      org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:274)
      at
      org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:183)




      I don't know why exchange doesn't contain the http response code when it's present in the error message in the postman.



      I'm using onException to handle any exceptions and then calling a processor to process the flow further:



      <camel:onException>
      <camel:exception>java.lang.Exception</camel:exception>
      <camel:process ref="xxxProcessor" />
      </camel:onException>


      I think I can consider responseCode=null as failure and proceed with my logic but want to understand why response code is being returned as null.



      Thanks in advance!










      share|improve this question
















      I'm new to camel and writing a small POC to implement in an existing application. Application takes a xml request as input which contains the requested services and relevant data. It then calls those services one by one.
      When a service is called successfully then I retrieve the http response code in a processor like below and do further logic:



      Object code = exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE);
      if(null!=code && code instanceof Integer)

      responseCode = (Integer) code;



      In success case, responseCode received = 201



      Based on the responseCode, I know if the service call is successful and then proceed with the next one.



      However, I tried to produce the negative scenario by making the service url incorrect and can't see the http response code anymore:



      Original service url - http://xxx:0000/.../.../.../.../...



      Modified service url - http://xxx:0000/.../.../.../.../abc/...



      In failure case, responseCode received = null



      In postman, I get the below error:




      org.apache.camel.http.common.HttpOperationFailedException: HTTP
      operation failed invoking http://xxx:0000/.../.../.../.../abc/...
      with statusCode: 404 at
      org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:274)
      at
      org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:183)




      I don't know why exchange doesn't contain the http response code when it's present in the error message in the postman.



      I'm using onException to handle any exceptions and then calling a processor to process the flow further:



      <camel:onException>
      <camel:exception>java.lang.Exception</camel:exception>
      <camel:process ref="xxxProcessor" />
      </camel:onException>


      I think I can consider responseCode=null as failure and proceed with my logic but want to understand why response code is being returned as null.



      Thanks in advance!







      java spring apache-camel






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 13 '18 at 9:39









      pvpkiran

      12.1k42342




      12.1k42342










      asked Mar 13 '18 at 9:20









      RahulRahul

      345211




      345211






















          2 Answers
          2






          active

          oldest

          votes


















          2














          I figured it out. It seems that in case of service exception, an instance of org.apache.camel.http.common.HttpOperationFailedException is thrown and the http status code is present in it. It can be retrieved in the processor like below:



          Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
          if(null!=e && e instanceof HttpOperationFailedException)

          HttpOperationFailedException httpOperationFailedException = (HttpOperationFailedException)e;
          responseCode=httpOperationFailedException.getStatusCode();






          share|improve this answer























          • Upvoted and at the same time added an answer that made it work for me

            – Kukeltje
            Nov 15 '18 at 19:22


















          0














          The accepted answer helped me and it might have been valid! In the camel version I'm usin (2.20.1), getting the exception via the property does not seem to work. The following does



          HttpOperationFailedException httpOperationFailedException = exchange.getException(HttpOperationFailedException.class);
          if(null!=e)
          responseCode = httpOperationFailedException.getStatusCode());






          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49252358%2fcamelhttpresponsecode-is-null-on-service-error%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            2














            I figured it out. It seems that in case of service exception, an instance of org.apache.camel.http.common.HttpOperationFailedException is thrown and the http status code is present in it. It can be retrieved in the processor like below:



            Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
            if(null!=e && e instanceof HttpOperationFailedException)

            HttpOperationFailedException httpOperationFailedException = (HttpOperationFailedException)e;
            responseCode=httpOperationFailedException.getStatusCode();






            share|improve this answer























            • Upvoted and at the same time added an answer that made it work for me

              – Kukeltje
              Nov 15 '18 at 19:22















            2














            I figured it out. It seems that in case of service exception, an instance of org.apache.camel.http.common.HttpOperationFailedException is thrown and the http status code is present in it. It can be retrieved in the processor like below:



            Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
            if(null!=e && e instanceof HttpOperationFailedException)

            HttpOperationFailedException httpOperationFailedException = (HttpOperationFailedException)e;
            responseCode=httpOperationFailedException.getStatusCode();






            share|improve this answer























            • Upvoted and at the same time added an answer that made it work for me

              – Kukeltje
              Nov 15 '18 at 19:22













            2












            2








            2







            I figured it out. It seems that in case of service exception, an instance of org.apache.camel.http.common.HttpOperationFailedException is thrown and the http status code is present in it. It can be retrieved in the processor like below:



            Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
            if(null!=e && e instanceof HttpOperationFailedException)

            HttpOperationFailedException httpOperationFailedException = (HttpOperationFailedException)e;
            responseCode=httpOperationFailedException.getStatusCode();






            share|improve this answer













            I figured it out. It seems that in case of service exception, an instance of org.apache.camel.http.common.HttpOperationFailedException is thrown and the http status code is present in it. It can be retrieved in the processor like below:



            Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
            if(null!=e && e instanceof HttpOperationFailedException)

            HttpOperationFailedException httpOperationFailedException = (HttpOperationFailedException)e;
            responseCode=httpOperationFailedException.getStatusCode();







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Mar 13 '18 at 9:54









            RahulRahul

            345211




            345211












            • Upvoted and at the same time added an answer that made it work for me

              – Kukeltje
              Nov 15 '18 at 19:22

















            • Upvoted and at the same time added an answer that made it work for me

              – Kukeltje
              Nov 15 '18 at 19:22
















            Upvoted and at the same time added an answer that made it work for me

            – Kukeltje
            Nov 15 '18 at 19:22





            Upvoted and at the same time added an answer that made it work for me

            – Kukeltje
            Nov 15 '18 at 19:22













            0














            The accepted answer helped me and it might have been valid! In the camel version I'm usin (2.20.1), getting the exception via the property does not seem to work. The following does



            HttpOperationFailedException httpOperationFailedException = exchange.getException(HttpOperationFailedException.class);
            if(null!=e)
            responseCode = httpOperationFailedException.getStatusCode());






            share|improve this answer



























              0














              The accepted answer helped me and it might have been valid! In the camel version I'm usin (2.20.1), getting the exception via the property does not seem to work. The following does



              HttpOperationFailedException httpOperationFailedException = exchange.getException(HttpOperationFailedException.class);
              if(null!=e)
              responseCode = httpOperationFailedException.getStatusCode());






              share|improve this answer

























                0












                0








                0







                The accepted answer helped me and it might have been valid! In the camel version I'm usin (2.20.1), getting the exception via the property does not seem to work. The following does



                HttpOperationFailedException httpOperationFailedException = exchange.getException(HttpOperationFailedException.class);
                if(null!=e)
                responseCode = httpOperationFailedException.getStatusCode());






                share|improve this answer













                The accepted answer helped me and it might have been valid! In the camel version I'm usin (2.20.1), getting the exception via the property does not seem to work. The following does



                HttpOperationFailedException httpOperationFailedException = exchange.getException(HttpOperationFailedException.class);
                if(null!=e)
                responseCode = httpOperationFailedException.getStatusCode());







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 15 '18 at 19:22









                KukeltjeKukeltje

                9,24941438




                9,24941438



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49252358%2fcamelhttpresponsecode-is-null-on-service-error%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Top Tejano songwriter Luis Silva dead of heart attack at 64

                    ReactJS Fetched API data displays live - need Data displayed static

                    政党