Have a look here: http://docs.codehaus.org/display/XFIRE/HTTP+Transport <http://docs.codehaus.org/display/XFIRE/HTTP+Transport> Hth, -Stefan
________________________________ From: Audry Chanel [mailto:[EMAIL PROTECTED] Sent: Dienstag, 13. Februar 2007 13:46 To: [email protected]; [email protected] Subject: [xfire-user] [xfire] pb with proxy authentication !!! I need help ! Hi everybody, I'm desperatly trying to use webservices with xfire 1.2.4, but my network requires proxy authentication to access external resources. I may believe that XFire 1.2.4 is not able to do that authentication ! I tried : import org.codehaus.xfire.client.Client; import com.ibm.wsdl.xml.WSDLReaderImpl; ... Client client = new Client( new WSDLReaderImpl().readWSDL("tmp/currencyconvertor.wsdl", null); // tmp/currencyconvertor.wsdl is a file where I copied the wsdl (because new Client(url) requires auhtentication too) // wsdl's url is : http://www.webservicex.net/CurrencyConvertor.asmx?wsdl client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_HOST, host); client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_PORT, port); client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_USER, user); client.setProperty (CommonsHttpMessageSender.HTTP_PROXY_PASS, pass); client.addInHandler(new DOMInHandler()); client.addInHandler(new LoggingHandler()); AegisBindingProvider provider = (AegisBindingProvider)client.getService().getBindingProvider(); TypeMapping tm = provider.getTypeMappingRegistry().getDefaultTypeMapping(); Object[] results = client.invoke("ConversionRate", new Object[] {"EUR", "VND"}); it returns "connection timeout" error (a wrong proxy is beeing tried). I tried (hazardously) to write (before client creation) : System.setProperty (CommonsHttpMessageSender.HTTP_PROXY_HOST, host); System.setProperty(CommonsHttpMessageSender.HTTP_PROXY_PORT, port); but this time the error is : ERROR: [http.HttpChannel] sendViaClient(HttpChannel.java:129) Server returned error code = 407 for URI : http://www.webservicex.net/CurrencyConvertor.asmx. Check server logs for details org.codehaus.xfire.fault.XFireFault: Server returned error code = 407 for URI : http://www.webservicex.net/CurrencyConvertor.asmx . Check server logs for details at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79) at org.codehaus.xfire.client.Client.invoke(Client.java:335) at org.codehaus.xfire.client.Client.invoke(Client.java:349) at BookDynamicClient.main(BookDynamicClient.java:101) Caused by: org.codehaus.xfire.XFireRuntimeException: Server returned error code = 407 for URI : http://www.webservicex.net/CurrencyConvertor.asmx. Check server logs for details at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel. java :130) at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48) at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java :26) at org.codehaus.xfire.handler.HandlerPipeline.invoke (HandlerPipeline.java:131) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:75) ... 3 more So I read sources files available at http://svn.xfire.codehaus.org/browse/xfire/trunk/xfire/xfire-core/src/ma in/org/codehaus/xfire/ ... , and it appears to me that XFire never look for authentication : basically, it seems that when invoking method, the client looks for proxy properties in a MessageContext that is created by Invocation, which doesn't care about these properties. When no proxy prop are found in this messagecontext, CommonsHttpMessageSender looks for proxy and port in system properties (that's why the 407 error), but it won't read neither username nor password... Is it possible to modify the messageContext to set my proxy properties in it and how? If not, I think that small change in code would help (like reading client properties - or even system properties - to set proxycredentials in CommonsHttpMessageSender)... thanks all !
