Great Toshi! Thanks so much, that explains it! Aagain, I guess the soap handler will be a more standard way to access the soap header, correct? Can you confirm? Nan
> -----Original Message----- > From: Toshiyuki Kimura [mailto:[EMAIL PROTECTED] > Sent: Tuesday, October 14, 2003 11:59 PM > To: [EMAIL PROTECTED] > Subject: RE: Stub.getHeader(namespace, partname) in axis1.1 > > > Nan, > > Umm..., you mean the headers.size() equals to zero. > > It seems the difference is from the modification on > "org/apache/axis/wsdl/toJava/JavaStubWriter.java". > > Here is the log; > [It may affect Axis 1.1 final] > .........*.........*.........*.........*.........*.........* > Revision 1.114 / Fri Apr 11 12:21:24 2003 UTC > Changes since 1.113: +0 -2 lines > > deprecated Stub.getResponseHeaders() and removed code for that > method so that response headers are not automatically reflected > back into the global header list for the Stub. The method will > remain in the code because pre-1.1 stubs will reference the > method. Updated the stub writer to not generate files referencing > getResponseHeaders(). > .........*.........*.........*.........*.........*.........* > > [It may affect the nightly build (i.e. the current code)] > .........*.........*.........*.........*.........*.........* > Revision 1.31 / Thu Aug 7 20:38:22 2003 UTC > Changes since 1.30: +39 -1 lines > > Add back in the ability to get response SOAP headers via the Stub. > Add a test case to make sure it works. > > This was removed in April 2003 to fix the problem where response > headers would be placed in the same place as request headers. > The solution to that went (way) too far, and in Axis 1.1, you can > only get response headers if you have the Call object, which you > can get from the Service object, which you *can't* get from the > Stub object. > > Solution is to add 2 new Stub APIs: > public SOAPHeaderElement[] getResponseHeaders() > public SOAPHeaderElement getResponseHeader > (String namespace, String partName) > > This makes it explicit that the response headers are separate from > the request headers. > .........*.........*.........*.........*.........*.........* > > You'd better use the latest code, if you want to touch > the headers from your stub - apologies for the detour. > > -- > Toshi <[EMAIL PROTECTED]> > > -----Original Message----- > From: Nan Xiong [mailto:[EMAIL PROTECTED] > Sent: Wednesday, October 15, 2003 1:35 PM > To: [EMAIL PROTECTED] > Subject: RE: Stub.getHeader(namespace, partname) in axis1.1 > > Toshi, > > I dont think the problem is the namespace, since stub.getHeaders() > returns 0 size array in axis1.1... so basically somehow, the headers > are not in stub anymore in axis1.1. > do you have more pointers where problem may be? > > thanks > Nan > > > -----Original Message----- > > From: Toshiyuki Kimura [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, October 14, 2003 8:36 PM > > To: [EMAIL PROTECTED] > > Subject: RE: Stub.getHeader(namespace, partname) in axis1.1 > > > > Nan, > > > > Thank you for sending the response message. > > I think this is not an intentional behavior. The stub.getHeader() > > has never changed between 1.1 RC2 and 1.1 final, and the code is > > as follows; > > > > public SOAPHeaderElement getHeader(String namespace,String > partName){ > > for(int i=0;i<headers.size();i++) { > > SOAPHeaderElement header = (SOAPHeaderElement)headers.get(i); > > if(header.getNamespaceURI().equals(namespace) && > > header.getName().equals(partName)) > > return header; > > } > > return null; > > } > > > > Please pay attention to the code - > > "header.getNamespaceURI().equals(namespace)". > > > > If the value of header.getNamespaceURI() doesn't equal to > > the namespace what you passed, you should get 'null'. > > That's a namespace issue, as I guessed. > > You're lucky. You have a chance to submit a patch, if you > > can debug the code. Please. :-) > > > > -- > > Toshi <[EMAIL PROTECTED]> > > > > -----Original Message----- > > From: Nan Xiong [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, October 15, 2003 11:12 AM > > To: [EMAIL PROTECTED] > > Subject: RE: Stub.getHeader(namespace, partname) in axis1.1 > > > > Toshi, > > > > Thanks for your reply. I'm usng .NET 1.1 (2003). > > the soap response from .NET is: > > > > <?xml version="1.0" encoding="utf-8"?> > > <soap:Envelope > > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > <soap:Header> > > <SessionTokenHeader > > xmlns="http://www.viewstar.com/webservices/2002/11"> > > <Token> > > VE9WXV5HS0zigKZd4oChX05hXMWSXmVswpBWWkbigJ1JSUxMTU9TUV > > NSWFdFWlhiYmNlXV/CqmBlwq1kY2NoamZpaWp0XG5weXXCunx3wqnD > > geKEosuGwrvCvcKzwrhsw4DCssK8wrHCv8K7w4XDiMOHw4rDhg== > > </Token> > > </SessionTokenHeader> > > </soap:Header> > > <soap:Body> > > <LoginResponse > > xmlns="http://www.viewstar.com/webservices/2002/11"> > > <LoginResult>true</LoginResult> > > </LoginResponse> > > </soap:Body> > > </soap:Envelope> > > > > I'm accessing header from Stub as following: > > > > stub.getHeader("http://www.viewstar.com/webservices/2002/11", > > "SessionTokenHeader"); > > > > the above call returns null in axis1.1, but returns > correctly in axis > > 1.1 RC2, against the same .NET service. > > > > I'm able to work around it using client side handler, but I > would like > > to know whether this is intentionally disabled? Will the > soap handler > > be a perfered way in terms of compliance to jaxrpc spec. > > > > Thanks > > Nan > > > > > -----Original Message----- > > > From: Toshiyuki Kimura [mailto:[EMAIL PROTECTED] > > > Sent: Tuesday, October 14, 2003 6:49 PM > > > To: [EMAIL PROTECTED] > > > Subject: Re: Stub.getHeader(namespace, partname) in axis1.1 > > > > > > Nan, > > > > > > I guess that it might be related to a change of handling > > > for namespace between RC2 and 1.1 final. A couple of days > > > before, I've met an interop issue - using Axis 1.1 final as > > > the server and .Net(InfoPath 2003) as the client. > > > > > > Did you snoop the messages ? What's the version of .Net ? > > > Could you post your request/response messages and its WSDL > > > files for both using 1.1 RC2 and 1.1 final ? > > > > > > -- > > > Toshi <[EMAIL PROTECTED]> > > > > > > -----Original Message----- > > > From: Nan Xiong [mailto:[EMAIL PROTECTED] > > > Sent: Wednesday, October 15, 2003 5:46 AM > > > To: [EMAIL PROTECTED] > > > Subject: Stub.getHeader(namespace, partname) in axis1.1 > > > > > > Hello, > > > > > > I have a .NET web services that passes session id (a string) > > > in the soap header, we were able to use Stub.getHeader(...) > > > and Stub.setHeader() to make axis client talking to the .NET > > > services using axis1.1 RC2, however, in axis1.1 final release, > > > getHeader returns null. Anybody has the same problem? > > > Can someone confirm this is a bug? or intentionally disabled? > > > Whats the alternatives to access the header? (client handler?) > > > > > > Thanks in advance > > > Nan > > >
