2 Replies Latest reply on Apr 1, 2010 7:35 AM by mstueber

    How to set HTTP-Headers correctly

      Starting with WS-Clients, i am facing a problem with http-headers.

       

      The following Code puts http-headers into the request  context. It works as expected with metro-libs, but with jbossws-libs  nothing is added:

       

             HelloPerson port = new  HelloPersonService().getHelloPersonPort();
              
               BindingProvider provider = (BindingProvider) port;
              
               Map<String, List<String>> map = (Map<String,  List<String>>)
                    provider.getRequestContext().get(MessageContext.HTTP_REQUEST_HEADERS);
               if (map == null)
                   map = new HashMap<String, List<String>>();
              
               map.put("Cookie", Collections.singletonList(
                       "SOMETHING=YES; domain=my.domain.net; path=/"));
               map.put("Authorization", Collections.singletonList(
                       "Basic " +  Base64.encodeBytes(("basicAuthUser:basicAuthPwd").getBytes())));
              
               System.out.println("Adding to HttpRequestHeaders [map="+map+"]  ...");
                provider.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,  map);
                              
               String retObj = port.helloTest("Teststring");

       

       

      I generated the client stubs with wsconsume (jbossws) and wsimport (metro).

       

      To run the client i execute wsrunclient.

       

      under jboss-4.2.2.GA (jbossws-native-2.0.1.SP2):

       

      set JBOSS_HOME=D:\jboss-4.2.2.GA
      set JAVA_HOME=D:\Bibliotheken\jdk1.5.0_05
      %JBOSS_HOME%\bin\wsrunclient -classpath  "..\build\classes;%JBOSS_HOME%\lib\jboss-common.jar" test.ws1.PersonServiceClient

       

      and under jboss-5.1.0.GA (Native Client: 3.1.2.GA)

       

      set JBOSS_HOME=D:\jboss-5.1.0.GA
      set  JAVA_HOME=D:\Bibliotheken\jdk1.5.0_05
      %JBOSS_HOME%\bin\wsrunclient  -classpath  "..\build\classes;%JBOSS_HOME%" test.ws1.PersonServiceClient

       

      with metro-libs i use the following script:

       

      set METRO_HOME=D:\Bibliotheken\metro-1.5

      set METRO_CLASSPATH=%METRO_CLASSPATH%;%METRO_HOME%\lib\webservices-api.jar

      set METRO_CLASSPATH=%METRO_CLASSPATH%;%METRO_HOME%\lib\webservices-extra-api.jar

      set METRO_CLASSPATH=%METRO_CLASSPATH%;%METRO_HOME%\lib\webservices-rt.jar

      set METRO_CLASSPATH=%METRO_CLASSPATH%;%METRO_HOME%\lib\webservices-extra.jar

      set METRO_CLASSPATH=%METRO_CLASSPATH%;%METRO_HOME%\lib\webservices-tools.jar


      set JAVA_HOME=D:\Bibliotheken\jdk1.5.0_05

       

      %JAVA_HOME%\bin\java -classpath "..\build\classes;%METRO_CLASSPATH%" test.ws1.PersonServiceClient

       

      I deployed the web service as a stateless session  bean.

       

      I would be very thankful for any help!! Regards,

      Christian