RE: Generated client to connect to a https ws
Hi Doug, I think it was you, who left a comment on my blog about the same issue. I have left you a response there. http://techpolesen.blogspot.com/2007/08/using-ssl-with-xfirecxf-battling.html Basically, I think you should try with this conduit name: {http://gov.nwcg.isuite.webservice}ConnectionAdmin; In the client config, even though you are deploying on SSL. /Per doug.anderson wrote: I believe I am having the same problems connecting to a https web service as you were having. I was wondering what the solution was that worked for you. I have a simple web service and client. When I host it on Tomcat at http://localhost:8080/service/services, the client connects just fine, but it does not work when using https://localhost:8443/service/services. I am using spring. For connection on http://localhost:8080/service/services here is the relevant portion of the spring config file on the server: jaxws:endpoint id=connectionAdmin implementor=#connectionAdminService address=/connectionAdminService / here is the relevant portion of the spring file for the client: bean id=adminClient class=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService factory-bean=adminClientFactory factory-method=create/ bean id=adminClientFactory class=org.apache.cxf.jaxws.JaxWsProxyFactoryBean property name=serviceClass value=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService/ property name=address value=http://localhost:8080/service/services/connectionAdminService/ /bean The server page at http://localhost:8080/service/services/ returns: {http://gov.nwcg.isuite.webservice}ConnectionAdmin When I run the client, it connects to the web service and everything is fine now I want to connect on https I change the spring config on the client to have an http:conduit with SSL and change the address of the client factory. It now reads: http:conduit name={https://gov.nwcg.isuite.webservice}ConnectionAdmin.http-conduit; http:tlsClientParameters secureSocketProtocol=SSL /http:tlsClientParameters /http:conduit bean id=adminClient class=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService factory-bean=adminClientFactory factory-method=create/ bean id=adminClientFactory class=org.apache.cxf.jaxws.JaxWsProxyFactoryBean property name=serviceClass value=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService/ property name=address value=https://localhost:8443/service/services/connectionAdminService/ /bean The server page at https://localhost:8443/service/services/ returns: {http://gov.nwcg.isuite.webservice}ConnectionAdmin When the client runs, I get the same error you were getting: .. Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnection(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46) ... 7 more Could you tell me what I am missing? Thanks for your help Doug Anderson Pirola Davide-2 wrote: Hi all, I solved the problem... was my fault :( Now I can contact adsense web services... BUT I have another issue. When I call the service cxf give me this error: org.apache.cxf.binding.soap.SoapFault: null is not a valid SOAP version The reason is that all services give me a wrong http response (415 Unsupported Media Type). My request: [EMAIL PROTECTED] pairs: {POST /api/adsense/v2/AccountService HTTP/1.1: null}{Content-Type: text/xml; charset=UTF-8}{developer_email: [EMAIL PROTECTED]: }{developer_password: mypassword}{client_id: ignored}{Cache-Control: no-cache}{Pragma: no-cache}{User-Agent: Java/1.6.0_01}{Host: sandbox.google.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}{Transfer-Encoding: chunked} Google response: [EMAIL PROTECTED] pairs: {null: HTTP/1.1 415 Unsupported Media Type}{Content-Type: text/html; charset=UTF-8}{Cache-control: private}{Content-Length: 167}{Date: Tue, 17 Jul 2007 17:09:38 GMT}{Server: GFE/1.3} Anyone have experience on this problem? Sure, Is always my fault.. but where? :D Thanks Davide -Original Message- From: Pirola Davide Sent: venerdì 13 luglio 2007 10.12 To: 'cxf-user@incubator.apache.org' Subject: RE: Generated client to connect to a https ws Hi Dan Willem, Thanks for your support! The problem I have is in this peace of code (AbstractHTTPTransportFactory): /** * This static call creates a connection factory based on * the existence of the SSL (TLS) client side configuration. */ static HttpURLConnectionFactory getConnectionFactory
Re: Generated client to connect to a https ws
Hi guys - U can take a look also at https://issues.apache.org/jira/browse/CXF-922 On Aug 29, 2007, at 1:12 AM, Per Olesen wrote: Hi Doug, I think it was you, who left a comment on my blog about the same issue. I have left you a response there. http://techpolesen.blogspot.com/2007/08/using-ssl-with-xfirecxf- battling.html Basically, I think you should try with this conduit name: {http://gov.nwcg.isuite.webservice}ConnectionAdmin; In the client config, even though you are deploying on SSL. /Per doug.anderson wrote: I believe I am having the same problems connecting to a https web service as you were having. I was wondering what the solution was that worked for you. I have a simple web service and client. When I host it on Tomcat at http://localhost:8080/service/services, the client connects just fine, but it does not work when using https://localhost:8443/service/services. I am using spring. For connection on http://localhost:8080/service/services here is the relevant portion of the spring config file on the server: jaxws:endpoint id=connectionAdmin implementor=#connectionAdminService address=/connectionAdminService / here is the relevant portion of the spring file for the client: bean id=adminClient class=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminServic e factory-bean=adminClientFactory factory-method=create/ bean id=adminClientFactory class=org.apache.cxf.jaxws.JaxWsProxyFactoryBean property name=serviceClass value=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminServic e/ property name=address value=http://localhost:8080/service/services/ connectionAdminService/ /bean The server page at http://localhost:8080/service/services/ returns: {http://gov.nwcg.isuite.webservice}ConnectionAdmin When I run the client, it connects to the web service and everything is fine now I want to connect on https I change the spring config on the client to have an http:conduit with SSL and change the address of the client factory. It now reads: http:conduit name={https://gov.nwcg.isuite.webservice}ConnectionAdmin.http- conduit http:tlsClientParameters secureSocketProtocol=SSL /http:tlsClientParameters /http:conduit bean id=adminClient class=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminServic e factory-bean=adminClientFactory factory-method=create/ bean id=adminClientFactory class=org.apache.cxf.jaxws.JaxWsProxyFactoryBean property name=serviceClass value=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminServic e/ property name=address value=https://localhost:8443/service/services/ connectionAdminService/ /bean The server page at https://localhost:8443/service/services/ returns: {http://gov.nwcg.isuite.webservice}ConnectionAdmin When the client runs, I get the same error you were getting: .. Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConn ection(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java: 468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage (MessageSenderInterceptor.java:46) ... 7 more Could you tell me what I am missing? Thanks for your help Doug Anderson Pirola Davide-2 wrote: Hi all, I solved the problem... was my fault :( Now I can contact adsense web services... BUT I have another issue. When I call the service cxf give me this error: org.apache.cxf.binding.soap.SoapFault: null is not a valid SOAP version The reason is that all services give me a wrong http response (415 Unsupported Media Type). My request: [EMAIL PROTECTED] pairs: {POST /api/adsense/v2/AccountService HTTP/1.1: null}{Content-Type: text/ xml; charset=UTF-8}{developer_email: [EMAIL PROTECTED]: }{developer_password: mypassword}{client_id: ignored}{Cache- Control: no-cache}{Pragma: no-cache}{User-Agent: Java/1.6.0_01}{Host: sandbox.google.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}{Transfer-Encoding: chunked} Google response: [EMAIL PROTECTED] pairs: {null: HTTP/1.1 415 Unsupported Media Type}{Content-Type: text/html; charset=UTF-8}{Cache-control: private}{Content-Length: 167}{Date: Tue, 17 Jul 2007 17:09:38 GMT}{Server: GFE/1.3} Anyone have experience on this problem? Sure, Is always my fault.. but where? :D Thanks Davide -Original Message- From: Pirola Davide Sent: venerdì 13 luglio 2007 10.12 To: 'cxf-user@incubator.apache.org' Subject: RE: Generated client to connect to a https ws Hi Dan Willem, Thanks for your support! The problem I have is in this peace of code (AbstractHTTPTransportFactory): /** * This static call creates a connection factory based on * the existence of the SSL (TLS) client side
RE: Generated client to connect to a https ws
I believe I am having the same problems connecting to a https web service as you were having. I was wondering what the solution was that worked for you. I have a simple web service and client. When I host it on Tomcat at http://localhost:8080/service/services, the client connects just fine, but it does not work when using https://localhost:8443/service/services. I am using spring. For connection on http://localhost:8080/service/services here is the relevant portion of the spring config file on the server: jaxws:endpoint id=connectionAdmin implementor=#connectionAdminService address=/connectionAdminService / here is the relevant portion of the spring file for the client: bean id=adminClient class=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService factory-bean=adminClientFactory factory-method=create/ bean id=adminClientFactory class=org.apache.cxf.jaxws.JaxWsProxyFactoryBean property name=serviceClass value=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService/ property name=address value=http://localhost:8080/service/services/connectionAdminService/ /bean The server page at http://localhost:8080/service/services/ returns: {http://gov.nwcg.isuite.webservice}ConnectionAdmin When I run the client, it connects to the web service and everything is fine now I want to connect on https I change the spring config on the client to have an http:conduit with SSL and change the address of the client factory. It now reads: http:conduit name={https://gov.nwcg.isuite.webservice}ConnectionAdmin.http-conduit; http:tlsClientParameters secureSocketProtocol=SSL /http:tlsClientParameters /http:conduit bean id=adminClient class=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService factory-bean=adminClientFactory factory-method=create/ bean id=adminClientFactory class=org.apache.cxf.jaxws.JaxWsProxyFactoryBean property name=serviceClass value=gov.nwcg.isuite.service.webservice.admin.ConnectionAdminService/ property name=address value=https://localhost:8443/service/services/connectionAdminService/ /bean The server page at https://localhost:8443/service/services/ returns: {http://gov.nwcg.isuite.webservice}ConnectionAdmin When the client runs, I get the same error you were getting: .. Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnection(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46) ... 7 more Could you tell me what I am missing? Thanks for your help Doug Anderson Pirola Davide-2 wrote: Hi all, I solved the problem... was my fault :( Now I can contact adsense web services... BUT I have another issue. When I call the service cxf give me this error: org.apache.cxf.binding.soap.SoapFault: null is not a valid SOAP version The reason is that all services give me a wrong http response (415 Unsupported Media Type). My request: [EMAIL PROTECTED] pairs: {POST /api/adsense/v2/AccountService HTTP/1.1: null}{Content-Type: text/xml; charset=UTF-8}{developer_email: [EMAIL PROTECTED]: }{developer_password: mypassword}{client_id: ignored}{Cache-Control: no-cache}{Pragma: no-cache}{User-Agent: Java/1.6.0_01}{Host: sandbox.google.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}{Transfer-Encoding: chunked} Google response: [EMAIL PROTECTED] pairs: {null: HTTP/1.1 415 Unsupported Media Type}{Content-Type: text/html; charset=UTF-8}{Cache-control: private}{Content-Length: 167}{Date: Tue, 17 Jul 2007 17:09:38 GMT}{Server: GFE/1.3} Anyone have experience on this problem? Sure, Is always my fault.. but where? :D Thanks Davide -Original Message- From: Pirola Davide Sent: venerdì 13 luglio 2007 10.12 To: 'cxf-user@incubator.apache.org' Subject: RE: Generated client to connect to a https ws Hi Dan Willem, Thanks for your support! The problem I have is in this peace of code (AbstractHTTPTransportFactory): /** * This static call creates a connection factory based on * the existence of the SSL (TLS) client side configuration. */ static HttpURLConnectionFactory getConnectionFactory( HTTPConduit configuredConduit ) { HttpURLConnectionFactory fac = null; if (configuredConduit.getTlsClientParameters() != null) { fac = new HttpsURLConnectionFactory( configuredConduit.getTlsClientParameters()); } else { fac = new HttpURLConnectionFactoryImpl(); } return fac; } The configuredConduit object seems to be ok... so I
RE: Generated client to connect to a https ws
Thanks Dan! I've solved this issue adding ContentType information in http-conduit: http:conduit name={http://www.google.com/api/adsense/v2}AccountService.http-conduit; http:client Connection=Keep-Alive MaxRetransmits=1 AllowChunking=false ContentType=text/xml/ http:tlsClientParameters/ /http:conduit I don't know why without it I receive this error... in fact, the http request already contains the text/xml information... so shouldn't be necessary to specify it in conduit :/ Now I'm working on another issue... adding some Soap header parameters to the message. I think that i've done it correctly: MapString, Object soapHeaders = new HashMapString, Object(); List h1 = new ArrayList(); h1.add([EMAIL PROTECTED]); soapHeaders.put(developer_email, h1); List h2 = new ArrayList(); h2.add(mypassword); soapHeaders.put(developer_password, h2); List h3 = new ArrayList(); h3.add(myclientid); soapHeaders.put(client_id, h3); ... ... requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, soapHeaders); but Google tell me that these values are missing :( There are other ways to add them to soap headers (for example directly in http-conduit)? Thanks Davide -Original Message- From: Dan Diephouse [mailto:[EMAIL PROTECTED] Sent: giovedì 19 luglio 2007 0.07 To: cxf-user@incubator.apache.org Subject: Re: Generated client to connect to a https ws It looks like Google is sending you an HTML response - not XML. Are you using the right endpoint URL for the google web service? You might want to try using TCPMon to look at the response google is sending back and see what their message says... http://cwiki.apache.org/CXF20DOC/debugging.html - Dan On 7/18/07, Pirola Davide [EMAIL PROTECTED] wrote: Hi all, I solved the problem... was my fault :( Now I can contact adsense web services... BUT I have another issue. When I call the service cxf give me this error: org.apache.cxf.binding.soap.SoapFault: null is not a valid SOAP version The reason is that all services give me a wrong http response (415 Unsupported Media Type). My request: [EMAIL PROTECTED] pairs: {POST /api/adsense/v2/AccountService HTTP/1.1: null}{Content-Type: text/xml; charset=UTF-8}{developer_email: [EMAIL PROTECTED]: }{developer_password: mypassword}{client_id: ignored}{Cache-Control: no-cache}{Pragma: no-cache}{User-Agent: Java/1.6.0_01}{Host: sandbox.google.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}{Transfer-Encoding: chunked} Google response: [EMAIL PROTECTED] pairs: {null: HTTP/1.1 415 Unsupported Media Type}{Content-Type: text/html; charset=UTF-8}{Cache-control: private}{Content-Length: 167}{Date: Tue, 17 Jul 2007 17:09:38 GMT}{Server: GFE/1.3} Anyone have experience on this problem? Sure, Is always my fault.. but where? :D Thanks Davide -Original Message- From: Pirola Davide Sent: venerdì 13 luglio 2007 10.12 To: 'cxf-user@incubator.apache.org' Subject: RE: Generated client to connect to a https ws Hi Dan Willem, Thanks for your support! The problem I have is in this peace of code (AbstractHTTPTransportFactory): /** * This static call creates a connection factory based on * the existence of the SSL (TLS) client side configuration. */ static HttpURLConnectionFactory getConnectionFactory( HTTPConduit configuredConduit ) { HttpURLConnectionFactory fac = null; if (configuredConduit.getTlsClientParameters() != null) { fac = new HttpsURLConnectionFactory( configuredConduit.getTlsClientParameters()); } else { fac = new HttpURLConnectionFactoryImpl(); } return fac; } The configuredConduit object seems to be ok... so I have it from the one configured in my cxf.xml file: http:conduit name={ http://www.google.com/api/adsense/v2}AccountServiceService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit BUT... the getTlsClientParameters() method return a null object :( So... seems that the general definition of conduit is ok.. but the http:tlsClientParameters is ingnored. I tried to put http:conduit definition in my cxf.xml file, and I used the system property to tell to cxf to load it, then I tried to put it in the cxf.xml file contained in the cxf-2.0-incubator.jar(/META-INF/cxf/cxf.xml).. but the result is the same. Now I'm trying to use the API, as suggested from Dan. Thanks Davide -Original Message- From: Dan Diephouse [mailto:[EMAIL PROTECTED] Sent: giovedì 12 luglio 2007 21.42 To: cxf-user@incubator.apache.org Subject: Re: Generated client to connect to a https ws Actually if you're using the client API, this is probably easier: YourService s = new YourService() ServiceInterface client
RE: Generated client to connect to a https ws
Hi Dan Willem, Thanks for your support! The problem I have is in this peace of code (AbstractHTTPTransportFactory): /** * This static call creates a connection factory based on * the existence of the SSL (TLS) client side configuration. */ static HttpURLConnectionFactory getConnectionFactory( HTTPConduit configuredConduit ) { HttpURLConnectionFactory fac = null; if (configuredConduit.getTlsClientParameters() != null) { fac = new HttpsURLConnectionFactory( configuredConduit.getTlsClientParameters()); } else { fac = new HttpURLConnectionFactoryImpl(); } return fac; } The configuredConduit object seems to be ok... so I have it from the one configured in my cxf.xml file: http:conduit name={http://www.google.com/api/adsense/v2}AccountServiceService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit BUT... the getTlsClientParameters() method return a null object :( So... seems that the general definition of conduit is ok.. but the http:tlsClientParameters is ingnored. I tried to put http:conduit definition in my cxf.xml file, and I used the system property to tell to cxf to load it, then I tried to put it in the cxf.xml file contained in the cxf-2.0-incubator.jar (/META-INF/cxf/cxf.xml).. but the result is the same. Now I'm trying to use the API, as suggested from Dan. Thanks Davide -Original Message- From: Dan Diephouse [mailto:[EMAIL PROTECTED] Sent: giovedì 12 luglio 2007 21.42 To: cxf-user@incubator.apache.org Subject: Re: Generated client to connect to a https ws Actually if you're using the client API, this is probably easier: YourService s = new YourService() ServiceInterface client = s.getYourServiceSoapHttpPort Client c = ClientProxy.getClient(client); HTTPConduit conduit = (HTTPConduit) c.getConduit() TLSClientParameters tlsParams = new TLSClientParameters(); conduit.setTlsClientParameters(tlsParams); Thats equivalent to the XMLM that Willem posted. I would think that you need to do something further with the tlsParams object (like tell it to accept the google certificate), but I'm not sure offhand how to do that. Anyone else around know? - Dan On 7/11/07, Willem Jiang [EMAIL PROTECTED] wrote: Please take the hello_world_https in the samples directory as a example. Here is the sample configuration files for you case: beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:sec=http://cxf.apache.org/configuration/security; xmlns:http=http://cxf.apache.org/transports/http/configuration; xmlns:jaxws=http://java.sun.com/xml/ns/jaxws; xsi:schemaLocation= http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd; http:conduit name={http://www.google.com/api/adsense/v2}AccountService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit /beans Cheers, Willem. Pirola Davide wrote: Hi, i'm new on cxf. I want to generate a client in order to connect to AdSense api of google: http://code.google.com/apis/adsense/developer/adsense_api_services.html I'm using wsdl2java, and I run it to point to a wsdl like this one: https://www.google.com/api/adsense/v2/AccountService?wsdl it generate all needed classes. So it's seems pretty cool :D But... when I try to connect to the google server I receive this error: 11-lug-2007 14.40.45 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnect ion
Re: Generated client to connect to a https ws
Hi, Could you try the trunk version of CXF, I test the below configuration in the trunk, configuredConduit.getTlsClientParameters() is not null and it just is a size of zero list. http:conduit name={http://www.google.com/api/adsense/v2}AccountServiceService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit Cheers, Willem. Pirola Davide wrote: Hi Dan Willem, Thanks for your support! The problem I have is in this peace of code (AbstractHTTPTransportFactory): /** * This static call creates a connection factory based on * the existence of the SSL (TLS) client side configuration. */ static HttpURLConnectionFactory getConnectionFactory( HTTPConduit configuredConduit ) { HttpURLConnectionFactory fac = null; if (configuredConduit.getTlsClientParameters() != null) { fac = new HttpsURLConnectionFactory( configuredConduit.getTlsClientParameters()); } else { fac = new HttpURLConnectionFactoryImpl(); } return fac; } The configuredConduit object seems to be ok... so I have it from the one configured in my cxf.xml file: http:conduit name={http://www.google.com/api/adsense/v2}AccountServiceService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit BUT... the getTlsClientParameters() method return a null object :( So... seems that the general definition of conduit is ok.. but the http:tlsClientParameters is ingnored. I tried to put http:conduit definition in my cxf.xml file, and I used the system property to tell to cxf to load it, then I tried to put it in the cxf.xml file contained in the cxf-2.0-incubator.jar (/META-INF/cxf/cxf.xml).. but the result is the same. Now I'm trying to use the API, as suggested from Dan. Thanks Davide -Original Message- From: Dan Diephouse [mailto:[EMAIL PROTECTED] Sent: giovedì 12 luglio 2007 21.42 To: cxf-user@incubator.apache.org Subject: Re: Generated client to connect to a https ws Actually if you're using the client API, this is probably easier: YourService s = new YourService() ServiceInterface client = s.getYourServiceSoapHttpPort Client c = ClientProxy.getClient(client); HTTPConduit conduit = (HTTPConduit) c.getConduit() TLSClientParameters tlsParams = new TLSClientParameters(); conduit.setTlsClientParameters(tlsParams); Thats equivalent to the XMLM that Willem posted. I would think that you need to do something further with the tlsParams object (like tell it to accept the google certificate), but I'm not sure offhand how to do that. Anyone else around know? - Dan On 7/11/07, Willem Jiang [EMAIL PROTECTED] wrote: Please take the hello_world_https in the samples directory as a example. Here is the sample configuration files for you case: beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:sec=http://cxf.apache.org/configuration/security; xmlns:http=http://cxf.apache.org/transports/http/configuration; xmlns:jaxws=http://java.sun.com/xml/ns/jaxws; xsi:schemaLocation= http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd; http:conduit name={http://www.google.com/api/adsense/v2}AccountService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit /beans Cheers, Willem. Pirola Davide wrote: Hi, i'm new on cxf. I want to generate a client in order to connect to AdSense api of google: http://code.google.com/apis/adsense/developer/adsense_api_services.html I'm using wsdl2java, and I run it to point to a wsdl like this one: https://www.google.com/api/adsense/v2/AccountService?wsdl it generate all needed classes. So it's seems pretty cool :D But... when I try to connect to the google server I receive this error: 11-lug-2007 14.40.45 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) at $Proxy28.createAdSenseAccount(Unknown Source
RE: Generated client to connect to a https ws
Hi Willem, I tried your solution, but I still receive the same error :( I have debugged with cxf source, and the problem is in HttpURLConnectionFactoryImpl: /** * This call creates an URLConnection for an HTTP url. * @throws IOException if the url protocol is not http. */ public HttpURLConnection createConnection(Proxy proxy, URL url) throws IOException { if (!url.getProtocol().equals(HTTP_URL_PROTOCOL_ID)) { throw new IOException(Illegal Protocol + url.getProtocol() + for HTTP URLConnection Factory.); } if (proxy != null) { return (HttpURLConnection) url.openConnection(proxy); } else { return (HttpURLConnection) url.openConnection(); } } The URL of the service, in Google WSDL, is: wsdl:service name=AccountServiceService wsdl:port binding=impl:AccountServiceSoapBinding name=AccountService wsdlsoap:address location=https://sandbox.google.com/api/adsense/v2/AccountService/ /wsdl:port /wsdl:service The protocol is HTTPS... so when the code over is reached, an exception is thrown. You have any other suggestions? Thank in advance, Davide -Original Message- From: Willem Jiang [mailto:[EMAIL PROTECTED] Sent: giovedì 12 luglio 2007 5.13 To: cxf-user@incubator.apache.org Subject: Re: Generated client to connect to a https ws Please take the hello_world_https in the samples directory as a example. Here is the sample configuration files for you case: beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:sec=http://cxf.apache.org/configuration/security; xmlns:http=http://cxf.apache.org/transports/http/configuration; xmlns:jaxws=http://java.sun.com/xml/ns/jaxws; xsi:schemaLocation= http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd; http:conduit name={http://www.google.com/api/adsense/v2}AccountService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit /beans Cheers, Willem. Pirola Davide wrote: Hi, i'm new on cxf. I want to generate a client in order to connect to AdSense api of google: http://code.google.com/apis/adsense/developer/adsense_api_services.html I'm using wsdl2java, and I run it to point to a wsdl like this one: https://www.google.com/api/adsense/v2/AccountService?wsdl it generate all needed classes. So it's seems pretty cool :D But... when I try to connect to the google server I receive this error: 11-lug-2007 14.40.45 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnect ion(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:46) ... 7 more Exception in thread main javax.xml.ws.soap.SOAPFaultException: Could not send Message. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:168) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke
Re: Generated client to connect to a https ws
Actually if you're using the client API, this is probably easier: YourService s = new YourService() ServiceInterface client = s.getYourServiceSoapHttpPort Client c = ClientProxy.getClient(client); HTTPConduit conduit = (HTTPConduit) c.getConduit() TLSClientParameters tlsParams = new TLSClientParameters(); conduit.setTlsClientParameters(tlsParams); Thats equivalent to the XMLM that Willem posted. I would think that you need to do something further with the tlsParams object (like tell it to accept the google certificate), but I'm not sure offhand how to do that. Anyone else around know? - Dan On 7/11/07, Willem Jiang [EMAIL PROTECTED] wrote: Please take the hello_world_https in the samples directory as a example. Here is the sample configuration files for you case: beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:sec=http://cxf.apache.org/configuration/security; xmlns:http=http://cxf.apache.org/transports/http/configuration; xmlns:jaxws=http://java.sun.com/xml/ns/jaxws; xsi:schemaLocation= http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd; http:conduit name={http://www.google.com/api/adsense/v2}AccountService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit /beans Cheers, Willem. Pirola Davide wrote: Hi, i'm new on cxf. I want to generate a client in order to connect to AdSense api of google: http://code.google.com/apis/adsense/developer/adsense_api_services.html I'm using wsdl2java, and I run it to point to a wsdl like this one: https://www.google.com/api/adsense/v2/AccountService?wsdl it generate all needed classes. So it's seems pretty cool :D But... when I try to connect to the google server I receive this error: 11-lug-2007 14.40.45 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnect ion(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:46) ... 7 more Exception in thread main javax.xml.ws.soap.SOAPFaultException: Could not send Message. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:168) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) ... 2 more Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnect ion(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:46) ... 7 more Seems that the generated client is not able to connect via https. Someone have any idea about this problem? What I miss?? Thanks
Re: Generated client to connect to a https ws
Please take the hello_world_https in the samples directory as a example. Here is the sample configuration files for you case: beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:sec=http://cxf.apache.org/configuration/security; xmlns:http=http://cxf.apache.org/transports/http/configuration; xmlns:jaxws=http://java.sun.com/xml/ns/jaxws; xsi:schemaLocation= http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd; http:conduit name={http://www.google.com/api/adsense/v2}AccountService.http-conduit; http:tlsClientParameters /http:tlsClientParameters /http:conduit /beans Cheers, Willem. Pirola Davide wrote: Hi, i'm new on cxf. I want to generate a client in order to connect to AdSense api of google: http://code.google.com/apis/adsense/developer/adsense_api_services.html I'm using wsdl2java, and I run it to point to a wsdl like this one: https://www.google.com/api/adsense/v2/AccountService?wsdl it generate all needed classes. So it's seems pretty cool :D But... when I try to connect to the google server I receive this error: 11-lug-2007 14.40.45 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnect ion(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:46) ... 7 more Exception in thread main javax.xml.ws.soap.SOAPFaultException: Could not send Message. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:168) at $Proxy28.createAdSenseAccount(Unknown Source) at com.google.api.adsense.v2.AccountServiceClient2.main(AccountServiceClien t2.java:54) Caused by: org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:48) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC hain.java:206) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) ... 2 more Caused by: java.io.IOException: Illegal Protocol https for HTTP URLConnection Factory. at org.apache.cxf.transport.http.HttpURLConnectionFactoryImpl.createConnect ion(HttpURLConnectionFactoryImpl.java:44) at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:468) at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(Messag eSenderInterceptor.java:46) ... 7 more Seems that the generated client is not able to connect via https. Someone have any idea about this problem? What I miss?? Thanks Davide