자바 wdl 역방향 으로 소스 코드 를 생 성하 고 CXF 를 사용 하여 클 라 이언 트 호출 코드 를 실현 합 니 다.

1.   상대방 이 제공 한 wsdl 링크 를 조회 하고 이 링크 와 wsdl 도 구 를 통 해 원본 파일 을 생 성 합 니 다.
      eg:  wsdl 주소:http://sersh.passport.189.cn/UDBAPPInterface/UDBAPPSYS/AccountLogin.asmx?WSDL
      cmd 를 열 고 다음 명령 을 입력 하 십시오: wsimport - extension - s d: / testhttp://sersh.passport.189.cn/UDBAPPInterface/UDBAPPSYS/AccountLogin.asmx?WSDL
2.   apache 홈 페이지 에 올 라 가 CXF 관련 jar 가방 을 다운로드 합 니 다.(apache-cxf-2.7.4.zip)
3.   관련 jar 패 키 지 를 프로젝트 에 가 져 와 클 라 이언 트 조회 코드 를 작성 합 니 다.(전제 조건 은 웹 서비스 서버 가 이미 배치 되 었 다 는 것 이다)
      
	public static void main(String[] args) throws MalformedURLException {
		
		System.out.println("start.");
		IMSILoginResult login = getIMSILoginResultFromQGUDBByImsi("460030136905408");
		System.out.println("mobile is " + login.getUserID());
		
	}

	private static String serviceUrl = "http://sersh.passport.189.cn/UDBAPPInterface/UDBAPPSYS/AccountLogin.asmx?WSDL";

	private static String QGUDB_DEVICENO = "3500000000408501";
	private static String QGUDB_DESKEY = "75BD2E98AC17564B2DB7C74B064F5084C6557FDDF3E4C286";

	public static <T> T getISAGService(Class<T> serviceClass, String serviceUrl) {

		final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

		factory.setServiceClass(serviceClass);

		factory.setAddress(serviceUrl);

		return (T) factory.create();

	}

	/**
	 *      ,  IMSI     FJUDB  (          ,    0,    .)
	 * @param IMSI
	 * @return
	 * @throws MalformedURLException 
	 * @throws Exception
	 */
	private static IMSILoginResult getIMSILoginResultFromQGUDBByImsi(String imsi)
			throws MalformedURLException {
		System.setProperty("http.proxyHost", "192.168.13.19");
		System.setProperty("http.proxyPort", "7777");

//		URL url = new URL(serviceUrl);
//		//			URL url = WebServiceUtil.class.getResource("/conf/AccountLogin_china.xml");
//		//			URL url = new URL("file:\\C:\\Users\\FFCS-4\\Desktop\\AccountLogin.xml");
//		QName name = new QName("http://udb.chinatelecom.com", "AccountLogin");
//		AccountLogin accountLogin = new AccountLogin(url, name);
//		AccountLoginSoap accountLoginSoap = accountLogin.getAccountLoginSoap();
		
		AccountLoginSoap accountLoginSoap = getISAGService(AccountLoginSoap.class, serviceUrl);
		
		String SrcSsDeviceNo = QGUDB_DEVICENO;
		String AuthSsDeviceNo = QGUDB_DEVICENO;
		String UDBTokenFlag = "0";
		String IPAddress = "218.5.99.35";

		Date date = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat(
				"yyyy-MM-dd HH:mm:ss");
		String TimeStamp = dateFormat.format(date);
		String Extension = "";
		//            
		String Authenticator1 = SrcSsDeviceNo + AuthSsDeviceNo + imsi
				+ UDBTokenFlag + IPAddress + TimeStamp + Extension;
		String Authenticator2 = Cryto.generateAuthenticator(Authenticator1,QGUDB_DESKEY, "utf-8");

		IMSILoginRequest imsiLoginRequest = new IMSILoginRequest();
		imsiLoginRequest.setAuthenticator(Authenticator2);
		imsiLoginRequest.setAuthSsDeviceNo(AuthSsDeviceNo);
		imsiLoginRequest.setExtension(Extension);
		imsiLoginRequest.setIMSI(imsi);
		imsiLoginRequest.setIPAddress(IPAddress);
		imsiLoginRequest.setSrcSsDeviceNo(SrcSsDeviceNo);
		imsiLoginRequest.setTimeStamp(TimeStamp);
		imsiLoginRequest.setUDBTokenFlag(UDBTokenFlag);
		IMSILoginResponse imsiLoginResponse = accountLoginSoap.imsiLogin(imsiLoginRequest);
		IMSILoginResult imsiLoginResult = imsiLoginResponse.getIMSILoginResult();

		IMSILoginResult result = null;
		//       0 ,      
		if (imsiLoginResult.getResultCode() == 0) {
			result = imsiLoginResult;
		}

		return result;
	}

좋은 웹페이지 즐겨찾기