• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java AuthorizationServiceConfiguration类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中net.openid.appauth.AuthorizationServiceConfiguration的典型用法代码示例。如果您正苦于以下问题:Java AuthorizationServiceConfiguration类的具体用法?Java AuthorizationServiceConfiguration怎么用?Java AuthorizationServiceConfiguration使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



AuthorizationServiceConfiguration类属于net.openid.appauth包,在下文中一共展示了AuthorizationServiceConfiguration类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: startServiceConfig

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
private void startServiceConfig() {
    Log.i(TAG, "Starting service config");

    String discoveryEndpoint = app.getString(R.string.discovery_endpoint);
    if (discoveryEndpoint.trim().length() == 0 || !URLUtil.isValidUrl(discoveryEndpoint)) {
        Log.i(TAG, "Using static service config");
        AuthorizationServiceConfiguration serviceConfig =
                new AuthorizationServiceConfiguration(
                        Uri.parse(app.getString(R.string.authorization_endpoint)),
                        Uri.parse(app.getString(R.string.token_endpoint)));
        authState = new AuthState(serviceConfig);
        userInfoUrl = app.getString(R.string.user_info_endpoint);

        finishServiceConfig();
    } else {
        Log.i(TAG, "Using discovery service config");
        Uri discoveryUri = Uri.parse(discoveryEndpoint);
        loginListener.onEvent(AuthRepo.this, AUTH_SERVICE_DISCOVERY_START);

        AuthorizationServiceConfiguration.fetchFromUrl(discoveryUri, this::finishServiceDiscovery);
    }
}
 
开发者ID:approov,项目名称:AppAuth-OAuth2-Books-Demo,代码行数:23,代码来源:AuthRepo.java


示例2: sendAuthorizationRequest

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
/**
 * Sends authorization request to authorization endpoint
 *
 * @param view: UIButton 'Get Tokens'
 */
public void sendAuthorizationRequest(View view) {
    final AuthorizationServiceConfiguration.RetrieveConfigurationCallback retrieveCallback =
            new AuthorizationServiceConfiguration.RetrieveConfigurationCallback() {
                @Override
                public void onFetchConfigurationCompleted(
                        @Nullable AuthorizationServiceConfiguration authorizationServiceConfiguration,
                        @Nullable AuthorizationException e) {
                    if(e != null) {
                        Log.w(TAG, "Failed to retrieve configuration for " + configuration.kIssuer, e);
                    } else {
                        Log.d(TAG, "Configuration retrieved for " + configuration.kIssuer + ", proceeding");
                        makeAuthRequest(authorizationServiceConfiguration);
                    }
                }
            };
    String discoveryEndpoint = configuration.kIssuer + "/.well-known/openid-configuration";
    AuthorizationServiceConfiguration.fetchFromUrl(Uri.parse(discoveryEndpoint), retrieveCallback);
}
 
开发者ID:oktadeveloper,项目名称:okta-openidconnect-appauth-android,代码行数:24,代码来源:OktaAppAuth.java


示例3: onClick

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
@Override
public void onClick(View view) {
  AuthorizationServiceConfiguration serviceConfiguration = new AuthorizationServiceConfiguration(
      Uri.parse("https://accounts.google.com/o/oauth2/v2/auth") /* auth endpoint */,
      Uri.parse("https://www.googleapis.com/oauth2/v4/token") /* token endpoint */
  );

  String clientId = "511828570984-fuprh0cm7665emlne3rnf9pk34kkn86s.apps.googleusercontent.com";
  Uri redirectUri = Uri.parse("com.google.codelabs.appauth:/oauth2callback");
  AuthorizationRequest.Builder builder = new AuthorizationRequest.Builder(
      serviceConfiguration,
      clientId,
      AuthorizationRequest.RESPONSE_TYPE_CODE,
      redirectUri
  );
  builder.setScopes("profile");
  AuthorizationRequest request = builder.build();

  AuthorizationService authorizationService = new AuthorizationService(view.getContext());

  String action = "com.google.codelabs.appauth.HANDLE_AUTHORIZATION_RESPONSE";
  Intent postAuthorizationIntent = new Intent(action);
  PendingIntent pendingIntent = PendingIntent.getActivity(view.getContext(), request.hashCode(), postAuthorizationIntent, 0);
  authorizationService.performAuthorizationRequest(request, pendingIntent);
}
 
开发者ID:googlecodelabs,项目名称:appauth-android-codelab,代码行数:26,代码来源:MainActivity.java


示例4: makeAuthRequest

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
private void makeAuthRequest(
        @NonNull AuthorizationServiceConfiguration serviceConfig,
        @NonNull IdentityProvider idp) {

    AuthorizationRequest authRequest = new AuthorizationRequest.Builder(
            serviceConfig,
            idp.getClientId(),
            ResponseTypeValues.CODE,
            idp.getRedirectUri())
            .setScope(idp.getScope())
            .build();

    Log.d(TAG, "Making auth request to " + idp.name);
    mAuthService.performAuthorizationRequest(
            authRequest,
            TokenActivity.createPostAuthorizationIntent(
                    this,
                    authRequest,
                    serviceConfig.discoveryDoc,
                    idp.getClientSecret()),
            mAuthService.createCustomTabsIntentBuilder()
                    .setToolbarColor(getCustomTabColor())
                    .build());
}
 
开发者ID:iainmcgin,项目名称:AppAuth-Demo,代码行数:25,代码来源:MainActivity.java


示例5: requestAuthorization

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
public void requestAuthorization(View view) {

        final AuthorizationServiceConfiguration.RetrieveConfigurationCallback retrieveCallback =
                new AuthorizationServiceConfiguration.RetrieveConfigurationCallback() {

                    @Override
                    public void onFetchConfigurationCompleted(
                            @Nullable AuthorizationServiceConfiguration serviceConfiguration,
                            @Nullable AuthorizationException ex) {
                        if (ex != null) {
                            Log.w(TAG, "Failed to retrieve configuration for " + OIDC_ISSUER, ex);
                        } else {
                            Log.d(TAG, "configuration retrieved for " + OIDC_ISSUER
                                    + ", proceeding");
                            authorize(serviceConfiguration);
                        }
                    }
                };

        String discoveryEndpoint = OIDC_ISSUER + "/.well-known/openid-configuration";

        AuthorizationServiceConfiguration.fetchFromUrl(Uri.parse(discoveryEndpoint), retrieveCallback);
    }
 
开发者ID:pingidentity,项目名称:Android-AppAuth-Sample-Application,代码行数:24,代码来源:MainActivity.java


示例6: makeAuthRequest

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
public void makeAuthRequest() {
	AuthorizationServiceConfiguration.fetchFromIssuer(
			ISSUER_URI,
			(@Nullable AuthorizationServiceConfiguration serviceConfiguration,
						@Nullable AuthorizationException ex) -> {
					if (ex != null) {
						DebugLog.logException(ex);
						service.dispose();
						LocalBroadcastManager.getInstance(context).unregisterReceiver(googleAuthReceiver);
						onAuthenticationError(getFragment().getString(R.string.es_msg_google_signin_failed));
					} else {
						// service configuration retrieved, proceed to authorization...'
						sendAuthRequest(serviceConfiguration);
					}
			});
}
 
开发者ID:Microsoft,项目名称:EmbeddedSocial-Android-SDK,代码行数:17,代码来源:GoogleNativeAuthenticator.java


示例7: sendAuthRequest

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
private void sendAuthRequest(AuthorizationServiceConfiguration serviceConfiguration) {
	Options options = GlobalObjectRegistry.getObject(Options.class);
	String clientId = options.getGoogleClientId();
	String authRedirect = String.format("%s:/oauth2redirect", context.getPackageName());

	Uri redirectUri = Uri.parse(authRedirect);

	AuthorizationRequest request = new AuthorizationRequest.Builder(
			serviceConfiguration,
			clientId,
			ResponseTypeValues.CODE,
			redirectUri)
			.setScopes(authMode.getPermissions())
			.build();

	PendingIntent pendingIntent = GoogleResponseHandler.createPostAuthorizationIntent(context, request);
	service.performAuthorizationRequest(request, pendingIntent);
	service.dispose();
}
 
开发者ID:Microsoft,项目名称:EmbeddedSocial-Android-SDK,代码行数:20,代码来源:GoogleNativeAuthenticator.java


示例8: makeAuthRequest

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
/**
 * Makes authentication request to endpoints in discovery document
 *
 * @param authorizationServiceConfiguration: AppAuth authorizationService detail
 */
private void makeAuthRequest(
        @NonNull AuthorizationServiceConfiguration authorizationServiceConfiguration
        ) {
    AuthorizationRequest authorizationRequest = new AuthorizationRequest.Builder(
            authorizationServiceConfiguration,
            configuration.kClientID,
            AuthorizationRequest.RESPONSE_TYPE_CODE,
            Uri.parse(configuration.kRedirectURI)).setScope(SCOPE).build();
    Log.d(TAG, "Making auth request to " + authorizationServiceConfiguration.authorizationEndpoint);
    mAuthService.performAuthorizationRequest(
            authorizationRequest,
            createPostAuthorizationIntent(
                    this.getApplicationContext(),
                    authorizationRequest,
                    authorizationServiceConfiguration.discoveryDoc
                    ));

}
 
开发者ID:oktadeveloper,项目名称:okta-openidconnect-appauth-android,代码行数:24,代码来源:OktaAppAuth.java


示例9: openPostLogoutRedirectUri

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
public void openPostLogoutRedirectUri(String clientId, String postLogoutRedirectUri, PendingIntent postLogoutIntent) throws JSONException {
    final AuthorizationServiceConfiguration configuration = state.getAuthorizationServiceConfiguration();
    final JSONObject discoveryDoc = configuration.discoveryDoc.docJson;
    final Uri endSessionEndpoint = Uri.parse(discoveryDoc.getString("end_session_endpoint"));

    final Map<String, String> additionalParameters = new HashMap<>();
    additionalParameters.put("post_logout_redirect_uri", postLogoutRedirectUri);
    additionalParameters.put("id_token_hint", state.getIdToken());

    final AuthorizationServiceConfiguration logoutConfiguration =
            new AuthorizationServiceConfiguration(endSessionEndpoint, configuration.tokenEndpoint, null);

    final AuthorizationRequest request = new AuthorizationRequest.Builder(
            logoutConfiguration,
            clientId,
            "none",
            Uri.parse(postLogoutRedirectUri))
            .setAdditionalParameters(additionalParameters)
            .build();

    CustomTabsIntent customTabsIntent = service.createCustomTabsIntentBuilder(request.toUri()).build();
    service.performAuthorizationRequest(request, postLogoutIntent, postLogoutIntent, customTabsIntent);
}
 
开发者ID:p7s1-ctf,项目名称:7pass-android-sample,代码行数:24,代码来源:LogoutRequest.java


示例10: loadAndSetConfiguration

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
@WorkerThread
private void loadAndSetConfiguration() {
    runOnUiThread(this::disableLoginButton);

    final Uri issuerUri = Uri.parse(staticConfiguration.getIssuer());

    AuthorizationServiceConfiguration.fetchFromIssuer(
            issuerUri,
            (configuration, ex) -> {
                if (ex != null) {
                    runOnUiThread(() -> log(String.format("An error occurred while fetching the configuration. Error details: %s", ex.getMessage())));
                } else {
                    this.configuration.set(configuration);
                    runOnUiThread(() -> {
                        try {
                            log(String.format("Received the following configuration: %s", configuration.toJson().toString(2)));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    });
                }
                runOnUiThread(this::enableLoginButton);
            });
}
 
开发者ID:p7s1-ctf,项目名称:7pass-android-sample,代码行数:25,代码来源:LoginActivity.java


示例11: AuthManager

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
private AuthManager(Context context){
	mSharedPrefRep = new SharedPreferencesRepository(context);
       setAuthData();
	mAuthConfig = new AuthorizationServiceConfiguration(
			Uri.parse(mAuth.getAuthorizationEndpointUri()),
			Uri.parse(mAuth.getTokenEndpointUri()),
			null);
	mAuthState = mSharedPrefRep.getAuthState();

	mAuthService = new AuthorizationService(context);
}
 
开发者ID:hadiidbouk,项目名称:AppAuthIdentityServer4,代码行数:12,代码来源:AuthManager.java


示例12: finishServiceDiscovery

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
private void finishServiceDiscovery(AuthorizationServiceConfiguration config,
        AuthorizationException ex) {
    if (config == null) {
        failLogin(new AuthException("Failed to retrieve authorization service discovery document"));
        return;
    }

    authState = new AuthState(config);
    AuthorizationServiceDiscovery discovery = config.discoveryDoc;
    userInfoUrl = discovery.getUserinfoEndpoint().toString();

    loginListener.onEvent(AuthRepo.this, AUTH_SERVICE_DISCOVERY_FINISH);

    finishServiceConfig();
}
 
开发者ID:approov,项目名称:AppAuth-OAuth2-Books-Demo,代码行数:16,代码来源:AuthRepo.java


示例13: onClick

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
@Override
public void onClick(View view) {
  AuthorizationServiceConfiguration serviceConfiguration = new AuthorizationServiceConfiguration(
      Uri.parse("https://accounts.google.com/o/oauth2/v2/auth") /* auth endpoint */,
      Uri.parse("https://www.googleapis.com/oauth2/v4/token") /* token endpoint */
  );
  AuthorizationService authorizationService = new AuthorizationService(view.getContext());
  String clientId = "511828570984-fuprh0cm7665emlne3rnf9pk34kkn86s.apps.googleusercontent.com";
  Uri redirectUri = Uri.parse("com.google.codelabs.appauth:/oauth2callback");
  AuthorizationRequest.Builder builder = new AuthorizationRequest.Builder(
      serviceConfiguration,
      clientId,
      AuthorizationRequest.RESPONSE_TYPE_CODE,
      redirectUri
  );
  builder.setScopes("profile");

  if(mMainActivity.getLoginHint() != null){
    Map loginHintMap = new HashMap<String, String>();
    loginHintMap.put(LOGIN_HINT,mMainActivity.getLoginHint());
    builder.setAdditionalParameters(loginHintMap);

    Log.i(LOG_TAG, String.format("login_hint: %s", mMainActivity.getLoginHint()));
  }

  AuthorizationRequest request = builder.build();
  String action = "com.google.codelabs.appauth.HANDLE_AUTHORIZATION_RESPONSE";
  Intent postAuthorizationIntent = new Intent(action);
  PendingIntent pendingIntent = PendingIntent.getActivity(view.getContext(), request.hashCode(), postAuthorizationIntent, 0);
  authorizationService.performAuthorizationRequest(request, pendingIntent);
}
 
开发者ID:googlecodelabs,项目名称:appauth-android-codelab,代码行数:32,代码来源:MainActivity.java


示例14: retrieveConfig

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
public void retrieveConfig(Context context,
                           RetrieveConfigurationCallback callback) {
    readConfiguration(context);
    if (getDiscoveryEndpoint() != null) {
        AuthorizationServiceConfiguration.fetchFromUrl(mDiscoveryEndpoint, callback);
    } else {
        AuthorizationServiceConfiguration config =
                new AuthorizationServiceConfiguration(mAuthEndpoint, mTokenEndpoint, null);
        callback.onFetchConfigurationCompleted(config, null);
    }
}
 
开发者ID:iainmcgin,项目名称:AppAuth-Demo,代码行数:12,代码来源:IdentityProvider.java


示例15: authorize

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
private void authorize(AuthorizationServiceConfiguration authServiceConfiguration) {

        // NOTE: Required for PingFederate 8.1 and below for the .setCodeVerifier() option below
        // to generate "plain" code_challenge_method these versions of PingFederate do not support
        // S256 PKCE.
        String codeVerifier = CodeVerifierUtil.generateRandomCodeVerifier();

        // OPTIONAL: Add any additional parameters to the authorization request
        HashMap<String, String> additionalParams = new HashMap<>();
        additionalParams.put("acr_values", "urn:acr:form");

        AuthorizationRequest authRequest = new AuthorizationRequest.Builder(
                authServiceConfiguration,
                OIDC_CLIENT_ID,
                AuthorizationRequest.RESPONSE_TYPE_CODE,
                Uri.parse(OIDC_REDIRECT_URI))
                .setScope(OIDC_SCOPE)
                .setCodeVerifier(codeVerifier, codeVerifier, "plain")
                .setAdditionalParameters(additionalParams)
                .build();

        Log.d(TAG, "Making auth request to " + authServiceConfiguration.authorizationEndpoint);
        mAuthService.performAuthorizationRequest(
                authRequest,
                createPostAuthorizationIntent(
                        this.getApplicationContext(),
                        authRequest,
                        authServiceConfiguration.discoveryDoc));
    }
 
开发者ID:pingidentity,项目名称:Android-AppAuth-Sample-Application,代码行数:30,代码来源:MainActivity.java


示例16: initializeAppAuth

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
/**
 * Initializes the authorization service configuration if necessary, either from the local
 * static values or by retrieving an OpenID discovery document.
 */
@WorkerThread
private void initializeAppAuth() {
    Log.i(TAG, "Initializing AppAuth");
    recreateAuthorizationService();

    if (mAuthStateManager.getCurrent().getAuthorizationServiceConfiguration() != null) {
        // configuration is already created, skip to client initialization
        Log.i(TAG, "auth config already established");
        initializeClient();
        return;
    }

    // if we are not using discovery, build the authorization service configuration directly
    // from the static configuration values.
    if (mConfiguration.getDiscoveryUri() == null) {
        Log.i(TAG, "Creating auth config from res/raw/auth_config.json");
        AuthorizationServiceConfiguration config = new AuthorizationServiceConfiguration(
                mConfiguration.getAuthEndpointUri(),
                mConfiguration.getTokenEndpointUri(),
                mConfiguration.getRegistrationEndpointUri());

        mAuthStateManager.replace(new AuthState(config));
        initializeClient();
        return;
    }

    // WrongThread inference is incorrect for lambdas
    // noinspection WrongThread
    runOnUiThread(() -> displayLoading("Retrieving discovery document"));
    Log.i(TAG, "Retrieving OpenID discovery doc");
    AuthorizationServiceConfiguration.fetchFromUrl(
            mConfiguration.getDiscoveryUri(),
            this::handleConfigurationRetrievalResult,
            mConfiguration.getConnectionBuilder());
}
 
开发者ID:openid,项目名称:AppAuth-Android,代码行数:40,代码来源:LoginActivity.java


示例17: handleConfigurationRetrievalResult

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
@MainThread
private void handleConfigurationRetrievalResult(
        AuthorizationServiceConfiguration config,
        AuthorizationException ex) {
    if (config == null) {
        Log.i(TAG, "Failed to retrieve discovery document", ex);
        displayError("Failed to retrieve discovery document: " + ex.getMessage(), true);
        return;
    }

    Log.i(TAG, "Discovery document retrieved");
    mAuthStateManager.replace(new AuthState(config));
    mExecutor.submit(this::initializeClient);
}
 
开发者ID:openid,项目名称:AppAuth-Android,代码行数:15,代码来源:LoginActivity.java


示例18: displayAuthOptions

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
@MainThread
private void displayAuthOptions() {
    findViewById(R.id.auth_container).setVisibility(View.VISIBLE);
    findViewById(R.id.loading_container).setVisibility(View.GONE);
    findViewById(R.id.error_container).setVisibility(View.GONE);

    AuthState state = mAuthStateManager.getCurrent();
    AuthorizationServiceConfiguration config = state.getAuthorizationServiceConfiguration();

    String authEndpointStr;
    if (config.discoveryDoc != null) {
        authEndpointStr = "Discovered auth endpoint: \n";
    } else {
        authEndpointStr = "Static auth endpoint: \n";
    }
    authEndpointStr += config.authorizationEndpoint;
    ((TextView)findViewById(R.id.auth_endpoint)).setText(authEndpointStr);

    String clientIdStr;
    if (state.getLastRegistrationResponse() != null) {
        clientIdStr = "Dynamic client ID: \n";
    } else {
        clientIdStr = "Static client ID: \n";
    }
    clientIdStr += mClientId;
    ((TextView)findViewById(R.id.client_id)).setText(clientIdStr);
}
 
开发者ID:openid,项目名称:AppAuth-Android,代码行数:28,代码来源:LoginActivity.java


示例19: revokeTokens

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
public void revokeTokens(String clientId) throws JSONException, MalformedURLException {
    final AuthorizationServiceConfiguration configuration = state.getAuthorizationServiceConfiguration();
    final JSONObject discoveryDoc = configuration.discoveryDoc.docJson;
    final URL revocationEndpoint = new URL(discoveryDoc.getString("revocation_endpoint"));

    if (state.getAccessToken() != null) {
        executor.submit(() -> revokeToken(revocationEndpoint, clientId, "access_token", state.getAccessToken()));
    }

    if (state.getRefreshToken() != null) {
        executor.submit(() -> revokeToken(revocationEndpoint, clientId, "refresh_token", state.getRefreshToken()));
    }
}
 
开发者ID:p7s1-ctf,项目名称:7pass-android-sample,代码行数:14,代码来源:LogoutRequest.java


示例20: startAuthentication

import net.openid.appauth.AuthorizationServiceConfiguration; //导入依赖的package包/类
@Override
public void startAuthentication() {
    LogUtils.logd(TAG, "[startAuthentication]");
    final Context appContext = fromParentContext;

    List<OpenIDIdentityProvider> providers = OpenIDIdentityProvider.getProviders(appContext);

    for (final OpenIDIdentityProvider idp : providers) {
        if(idp.name.equals("Google")){
            Uri issuerUri = Uri.parse("https://accounts.google.com");
            AuthorizationServiceConfiguration.fetchFromIssuer(
                issuerUri,
                new RetrieveConfigurationCallback() {
                    @Override public void onFetchConfigurationCompleted(
                            @Nullable AuthorizationServiceConfiguration serviceConfiguration,
                            @Nullable AuthorizationException ex) {
                        if (ex != null) {
                            LogUtils.logd(TAG, "Failed to retrieve configuration for " + idp.name, ex);
                        } else {
                            if (idp.getClientId() == null) {
                                // Do dynamic client registration if no client_id
                                makeRegistrationRequest(serviceConfiguration, idp);
                            } else {
                                makeAuthRequest(serviceConfiguration, idp, new AuthState());
                            }
                        }
                    }
                });


        }
    }


}
 
开发者ID:janrain,项目名称:jump.android,代码行数:36,代码来源:OpenIDAppAuthGoogle.java



注:本文中的net.openid.appauth.AuthorizationServiceConfiguration类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java CommandOption类代码示例发布时间:2022-05-22
下一篇:
Java CloseOp类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap