java調用https的webservice,https的wsdl

java調webService太正常了。。。
在調用https的webService的時候幾種常用的方法會出現安全錯誤,很多人說的是在jre裏面裝證書。。。那也太鬱悶了吧
這裏提供一種不用證書的方式


對方webService提供的接口,這個你應該要知道的吧,不知道的話就wsdl自己還原
Java代碼 複製代碼
  1. /**  
  2.  * webService接口聲明  
  3.  * 包括兩個方法:  
  4.  * 1.獲取微博authtoken  
  5.  * 2.獲取微博信息   
  6.  * @author bo  
  7.  * @version $Id: WeiboInterface.java,v 0.1 2009-9-1 上午09:59:05 bo Exp $  
  8.  */  
  9. public interface WeiboInterface{   
  10.     // 獲取微博authtoken   
  11.     public String getWeiboAuthToken();   
  12.   
  13.     // 獲取微博信息     
  14.     public String getWeiboInfo();   
  15. }  
Java代碼 複製代碼
  1.     /** webService地址 */  
  2.     private static final String SERVICE_URL       = "https://localhost/wsdl/services1/";   
  3.   
  4.     /** webService的名稱空間 */  
  5.     private static final String SERVICE_NAMESPACE = https://localhost/wsdls;   
  6.   
  7.   
  8.     /** 服務名稱 */  
  9.     private static final String SERVICE_NAME      = "weiboGetInfo";   
  10.   
  11.     /** http協議類型 */  
  12.     private static final String HTTP_TYPE         = "https";   
  13.   
  14.     /** 端口號 */  
  15.     private static final int    PORT              = 443;   
  16. /**  
  17.      * 初始化webService調用,設置訪問webService的相關屬性  
  18.      */  
  19.     private void initService() {   
  20.         ProtocolSocketFactory easy = new EasySSLProtocolSocketFactory();   
  21.         Protocol protocol = new Protocol(HTTP_TYPE, easy, PORT);   
  22.         Protocol.registerProtocol(HTTP_TYPE, protocol);   
  23.         Service serviceModel = new ObjectServiceFactory().create(WeiboInterface.class,   
  24.             "weiboService", SERVICE_NAMESPACE, null);   
  25.         try {   
  26.             service = (WeiboInterface) new XFireProxyFactory().create(serviceModel, SERVICE_URL   
  27.                                                                                     + SERVICE_NAME);   
  28.         } catch (MalformedURLException e) {   
  29.             logger.error("初始化webService失敗," + e);   
  30.         }   
  31.         //設置client的相關屬性,設置傳輸數據的方式   
  32.         Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();   
  33.         client.addOutHandler(new DOMOutHandler());   
  34.         client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED, Boolean.TRUE);   
  35.         client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "1");   
  36.         client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");   
  37.     }  
   

service就相當於將webService給初始化了,然後就可以直接service調用XXXInterface裏面的方法了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章