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

Java TokenRequest类代码示例

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

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



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

示例1: refreshAccessToken

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Override
public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, TokenRequest tokenRequest) throws AuthenticationException {
    logger.info("refresh token:" + refreshTokenValue);
    String jti = tokenRequest.getRequestParameters().get("jti");
    try {
        if ( jti != null )
                if ( blackListService.isBlackListed(jti) ) return null;


        OAuth2AccessToken token = super.refreshAccessToken(refreshTokenValue, tokenRequest);
        blackListService.addToBlackList(jti);
        return token;
    } catch (TokenBlackListService.TokenNotFoundException e) {
        e.printStackTrace();
        return null;
    }
}
 
开发者ID:tinmegali,项目名称:Using-Spring-Oauth2-to-secure-REST,代码行数:18,代码来源:AuthorizationConfig.java


示例2: authenticateClient

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@BodyParser.Of(BodyParser.Json.class)
public Promise<Result> authenticateClient() {
  JsonNode json = request().body().asJson();
  String clientId = json.findPath("clientId").textValue();
  String clientSecret = json.findPath("clientSecret").textValue();

  UsernamePasswordAuthenticationToken authRequest =
      new UsernamePasswordAuthenticationToken(clientId, clientSecret);
  clientAuthenticationManager.authenticate(authRequest);

  ClientDetails clientDetails = clientDetailsService.loadClientByClientId(clientId);
  TokenRequest tokenRequest = new TokenRequest(Collections.emptyMap(), clientId,
      clientDetails.getScope(), "password");
  OAuth2AccessToken token = tokenGranter.grant("client_credentials", tokenRequest);

  ObjectNode result = Json.newObject();
  result.setAll(ImmutableMap.of(
      "accessToken", result.textNode(token.getValue()),
      "clientId", result.textNode(clientId),
      "expiration", result.numberNode(token.getExpiration().getTime())));
  return Promise.pure(ok(result));
}
 
开发者ID:tfeng,项目名称:play-oauth2,代码行数:23,代码来源:SecurityController.java


示例3: authenticateUser

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@BodyParser.Of(BodyParser.Json.class)
@PreAuthorize("#oauth2.clientHasRole('ROLE_CLIENT') and #oauth2.hasScope('trust')")
public Promise<Result> authenticateUser() {
  JsonNode json = request().body().asJson();
  String username = json.findPath("username").textValue();
  String password = json.findPath("password").textValue();

  Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  OAuth2Request clientAuthenticationRequest =
      ((OAuth2Authentication) authentication).getOAuth2Request();
  Map<String, String> requestParameters = new HashMap<>();
  requestParameters.put("username", username);
  requestParameters.put("password", password);
  TokenRequest tokenRequest = new TokenRequest(requestParameters,
          clientAuthenticationRequest.getClientId(), clientAuthenticationRequest.getScope(),
          "password");
  OAuth2AccessToken token = tokenGranter.grant("password", tokenRequest);
  ObjectNode result = Json.newObject();
  result.setAll(ImmutableMap.of(
      "accessToken", result.textNode(token.getValue()),
      "username", result.textNode(username),
      "expiration", result.numberNode(token.getExpiration().getTime()),
      "refreshToken", result.textNode(token.getRefreshToken().getValue())));
  return Promise.pure(ok(result));
}
 
开发者ID:tfeng,项目名称:play-oauth2,代码行数:26,代码来源:SecurityController.java


示例4: refreshUserAccessToken

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@BodyParser.Of(BodyParser.Json.class)
@PreAuthorize("#oauth2.clientHasRole('ROLE_CLIENT') and #oauth2.hasScope('trust')")
public Promise<Result> refreshUserAccessToken() {
  JsonNode body = request().body().asJson();
  String refreshToken = body.findPath("refreshToken").textValue();

  Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  OAuth2Request clientAuthenticationRequest =
      ((OAuth2Authentication) authentication).getOAuth2Request();
  TokenRequest tokenRequest =
      new TokenRequest(Collections.emptyMap(), clientAuthenticationRequest.getClientId(),
          clientAuthenticationRequest.getScope(), "refresh");
  OAuth2AccessToken token = tokenServices.refreshAccessToken(refreshToken, tokenRequest);
  ObjectNode result = Json.newObject();
  result.setAll(ImmutableMap.of(
      "accessToken", result.textNode(token.getValue()),
      "expiration", result.numberNode(token.getExpiration().getTime()),
      "refreshToken", result.textNode(token.getRefreshToken().getValue())));
  return Promise.pure(ok(result));
}
 
开发者ID:tfeng,项目名称:play-oauth2,代码行数:21,代码来源:SecurityController.java


示例5: getOAuth2Authentication

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Override
protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {

	Map<String, String> parameters = tokenRequest.getRequestParameters();
	String username = parameters.get("username");
	String password = parameters.get("password");

	Authentication userAuth = new UsernamePasswordAuthenticationToken(username, password);
	try {
		userAuth = authenticationManager.authenticate(userAuth);
	}
	catch (AccountStatusException ase) {
		//covers expired, locked, disabled cases (mentioned in section 5.2, draft 31)
		throw new InvalidGrantException(ase.getMessage());
	}
	catch (BadCredentialsException e) {
		// If the username/password are wrong the spec says we should send 400/invlid grant
		throw new InvalidGrantException(e.getMessage());
	}
	if (userAuth == null || !userAuth.isAuthenticated()) {
		throw new InvalidGrantException("Could not authenticate user: " + username);
	}
	
	OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);		
	return new OAuth2Authentication(storedOAuth2Request, userAuth);
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:27,代码来源:ResourceOwnerPasswordTokenGranter.java


示例6: testNotReuseRefreshTokenMaintainsState

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Test
public void testNotReuseRefreshTokenMaintainsState() throws Exception {
	getTokenServices().setSupportRefreshToken(true);
	getTokenServices().setReuseRefreshToken(false);
	OAuth2AccessToken accessToken = getTokenServices().createAccessToken(
			createAuthentication());
	OAuth2RefreshToken expectedExpiringRefreshToken = accessToken
			.getRefreshToken();
	TokenRequest tokenRequest = new TokenRequest(Collections.singletonMap(
			"client_id", "id"), "id", null, null);
	OAuth2AccessToken refreshedAccessToken = getTokenServices()
			.refreshAccessToken(expectedExpiringRefreshToken.getValue(),
					tokenRequest);
	assertNotNull(refreshedAccessToken);
	assertEquals(1, getRefreshTokenCount());
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:17,代码来源:AbstractTestDefaultTokenServices.java


示例7: init

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Before
public void init() throws Exception {
	client = new BaseClientDetails();
	client.setRegisteredRedirectUri(Collections.singleton("http://anywhere.com"));
	client.setAuthorizedGrantTypes(Arrays.asList("authorization_code", "implicit"));
	endpoint.setClientDetailsService(new ClientDetailsService() {
		public ClientDetails loadClientByClientId(String clientId) throws OAuth2Exception {
			return client;
		}
	});
	endpoint.setTokenGranter(new TokenGranter() {
		public OAuth2AccessToken grant(String grantType, TokenRequest tokenRequest) {
			return null;
		}
	});
	endpoint.setRedirectResolver(new DefaultRedirectResolver());
	endpoint.afterPropertiesSet();
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:19,代码来源:AuthorizationEndpointTests.java


示例8: testGetAccessTokenWithNoClientId

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Test
public void testGetAccessTokenWithNoClientId() {

	HashMap<String, String> parameters = new HashMap<String, String>();
	parameters.put(OAuth2Utils.GRANT_TYPE, "authorization_code");

	OAuth2AccessToken expectedToken = new DefaultOAuth2AccessToken("FOO");
	when(tokenGranter.grant(Mockito.eq("authorization_code"), Mockito.any(TokenRequest.class))).thenReturn(
			expectedToken);
	@SuppressWarnings("unchecked")
	Map<String, String> anyMap = Mockito.any(Map.class);
	when(authorizationRequestFactory.createTokenRequest(anyMap, Mockito.any(ClientDetails.class))).thenReturn(
			createFromParameters(parameters));

	clientAuthentication = new UsernamePasswordAuthenticationToken(null, null,
			Collections.singleton(new SimpleGrantedAuthority("ROLE_CLIENT")));
	ResponseEntity<OAuth2AccessToken> response = endpoint.getAccessToken(clientAuthentication, parameters);

	assertNotNull(response);
	assertEquals(HttpStatus.OK, response.getStatusCode());
	OAuth2AccessToken body = response.getBody();
	assertEquals(body, expectedToken);
	assertTrue("Wrong body: " + body, body.getTokenType() != null);
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:25,代码来源:TokenEndpointTests.java


示例9: getOAuth2Authentication

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Override
protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {

    Map<String, String> parameters = tokenRequest.getRequestParameters();
    String authorizationCode = parameters.get("code");
    String redirectUri = parameters.get(OAuth2Utils.REDIRECT_URI);
    String codeVerifier = parameters.get("code_verifier");

    if (authorizationCode == null) {
        throw new InvalidRequestException("An authorization code must be supplied.");
    }

    OAuth2Authentication storedAuth = authorizationCodeServices.consumeAuthorizationCode(authorizationCode);
    if (storedAuth == null) {
        throw new InvalidGrantException("Invalid authorization code: " + authorizationCode);
    }

    OAuth2Request pendingOAuth2Request = storedAuth.getOAuth2Request();




    // Validates code verifier
    Map<String, String> pendingOauth2RequestParams = pendingOAuth2Request.getRequestParameters();
    String codeChallenge = pendingOauth2RequestParams.get("code_challenge");
    String codeChallengeMethod = pendingOauth2RequestParams.get("code_challenge_method");

    if (codeVerifier == null && codeChallenge != null) {
        // client is using PKCE but did not send the codeVerifier
        throw new InvalidRequestException(
                "Invalid authorization code for current token request.");
    }

    if (codeVerifier != null && codeChallenge != null) {
        String hashed = codeVerifier;
        if ("S256".equals(codeChallengeMethod)) {
            hashed = DigestUtils.sha256Hex(codeVerifier);
        }

        if (!hashed.equalsIgnoreCase(codeChallenge)) {
            throw new InvalidRequestException(
                    "Invalid authorization code for current token request.");
        }
    }



    // https://jira.springsource.org/browse/SECOAUTH-333
    // This might be null, if the authorization was done without the redirect_uri parameter
    String redirectUriApprovalParameter = pendingOAuth2Request.getRequestParameters().get(
            OAuth2Utils.REDIRECT_URI);

    if ((redirectUri != null || redirectUriApprovalParameter != null)
            && !pendingOAuth2Request.getRedirectUri().equals(redirectUri)) {
        throw new RedirectMismatchException("Redirect URI mismatch.");
    }

    String pendingClientId = pendingOAuth2Request.getClientId();
    String clientId = tokenRequest.getClientId();
    if (clientId != null && !clientId.equals(pendingClientId)) {
        // just a sanity check.
        throw new InvalidClientException("Client ID mismatch");
    }

    // Secret is not required in the authorization request, so it won't be available
    // in the pendingAuthorizationRequest. We do want to check that a secret is provided
    // in the token request, but that happens elsewhere.

    Map<String, String> combinedParameters = new HashMap<String, String>(pendingOAuth2Request
            .getRequestParameters());
    // Combine the parameters adding the new ones last so they override if there are any clashes
    combinedParameters.putAll(parameters);

    // Make a new stored request with the combined parameters
    OAuth2Request finalStoredOAuth2Request = pendingOAuth2Request.createOAuth2Request(combinedParameters);

    Authentication userAuth = storedAuth.getUserAuthentication();

    return new OAuth2Authentication(finalStoredOAuth2Request, userAuth);

}
 
开发者ID:PacktPublishing,项目名称:OAuth-2.0-Cookbook,代码行数:82,代码来源:CustomAuthCodeTokenGranter.java


示例10: refreshAccessToken

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Override
public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, TokenRequest tokenRequest)
        throws AuthenticationException {

    OAuth2AccessToken token = super.refreshAccessToken(refreshTokenValue, tokenRequest);
    return token;
}
 
开发者ID:ustcwudi,项目名称:springboot-seed,代码行数:8,代码来源:CustomTokenService.java


示例11: createTokenRequest

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Override
public TokenRequest createTokenRequest(Map<String, String> requestParameters, ClientDetails authenticatedClient) {
    TokenRequest tokenRequest = super.createTokenRequest(requestParameters, authenticatedClient);

    Map<String, String> enhancedRequestParameters = new HashMap<>(tokenRequest.getRequestParameters());
    enhancedRequestParameters.put(OAuth2Utils.CLIENT_ID, authenticatedClient.getClientId());
    tokenRequest.setRequestParameters(enhancedRequestParameters);

    return tokenRequest;
}
 
开发者ID:gravitee-io,项目名称:graviteeio-access-management,代码行数:11,代码来源:CustomOAuth2RequestFactory.java


示例12: getAccessTokenForImplicitGrant

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
private OAuth2AccessToken getAccessTokenForImplicitGrant(TokenRequest tokenRequest, OAuth2Request storedOAuth2Request) {
    OAuth2AccessToken accessToken;
    // These 1 method calls have to be atomic, otherwise the ImplicitGrantService can have a race condition where
    // one thread removes the token request before another has a chance to redeem it.
    synchronized (this.implicitLock) {
        accessToken = tokenGranter.grant("implicit",
            new ImplicitTokenRequest(tokenRequest, storedOAuth2Request));
    }
    return accessToken;
}
 
开发者ID:petrbouda,项目名称:joyrest,代码行数:11,代码来源:AuthorizationEndpoint.java


示例13: getImplicitGrantResponse

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
private String getImplicitGrantResponse(AuthorizationRequest authorizationRequest) {
    try {
        TokenRequest tokenRequest = requestFactory.createTokenRequest(authorizationRequest, "implicit");
        OAuth2Request storedOAuth2Request = requestFactory.createOAuth2Request(authorizationRequest);
        OAuth2AccessToken accessToken = getAccessTokenForImplicitGrant(tokenRequest, storedOAuth2Request);
        if (isNull(accessToken)) {
            throw new UnsupportedResponseTypeException("Unsupported response type: token");
        }
        return appendAccessToken(authorizationRequest, accessToken);
    } catch (OAuth2Exception e) {
        return getUnsuccessfulRedirect(authorizationRequest, e, true);
    }
}
 
开发者ID:petrbouda,项目名称:joyrest,代码行数:14,代码来源:AuthorizationEndpoint.java


示例14: authenticate

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
void authenticate(String... authorities) {
    StringBuilder authoritiesBuilder = new StringBuilder();
    for (String authority : authorities) {
        authoritiesBuilder.append(",").append(authority);
    }
    ClientDetails client = new BaseClientDetails("clientId", null, "read", "client_credentials", authoritiesBuilder.substring(1));
    OAuth2Authentication authentication = new OAuth2Authentication(new TokenRequest(null, "clientId", null, "client_credentials").createOAuth2Request(client), null);

    SecurityContext context = SecurityContextHolder.createEmptyContext();
    context.setAuthentication(authentication);
    SecurityContextHolder.setContext(context);
}
 
开发者ID:HelfenKannJeder,项目名称:come2help,代码行数:13,代码来源:AbstractControllerTest.java


示例15: refreshAccessToken

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, TokenRequest request)
		throws AuthenticationException {

	if (!supportRefreshToken) {
		throw new InvalidGrantException("Invalid refresh token: " + refreshTokenValue);
	}

	OAuth2Authentication authentication = loadAuthentication(refreshTokenValue);
	String clientId = authentication.getOAuth2Request().getClientId();
	if (clientId == null || !clientId.equals(request.getClientId())) {
		throw new InvalidGrantException("Wrong client for this refresh token: " + refreshTokenValue);
	}

	OAuth2AccessToken refreshTokenData = readAccessToken(refreshTokenValue);
	if (isExpired(refreshTokenData)) {
		throw new InvalidTokenException("Invalid refresh token (expired): " + refreshTokenValue);
	}

	authentication = createRefreshedAuthentication(authentication, request.getScope());

	OAuth2AccessToken accessToken = createAccessToken(authentication);
	if (!reuseRefreshToken) {
		OAuth2RefreshToken refreshToken = createRefreshToken(authentication);
		DefaultOAuth2AccessToken result = new DefaultOAuth2AccessToken(accessToken);
		result.setRefreshToken(refreshToken);
	}

	return accessToken;
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:30,代码来源:JwtTokenServices.java


示例16: grant

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Override
public OAuth2AccessToken grant(String grantType, TokenRequest tokenRequest) {
	OAuth2AccessToken token = super.grant(grantType, tokenRequest);
	if (token != null) {
		DefaultOAuth2AccessToken norefresh = new DefaultOAuth2AccessToken(token);
		// The spec says that client credentials should not be allowed to get a refresh token
		if (!allowRefresh) {
			norefresh.setRefreshToken(null);
		}
		token = norefresh;
	}
	return token;
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:14,代码来源:ClientCredentialsTokenGranter.java


示例17: getImplicitGrantResponse

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
private ModelAndView getImplicitGrantResponse(AuthorizationRequest authorizationRequest) {
	try {
		TokenRequest tokenRequest = getOAuth2RequestFactory().createTokenRequest(authorizationRequest, "implicit");
		OAuth2Request storedOAuth2Request = getOAuth2RequestFactory().createOAuth2Request(authorizationRequest);
		implicitGrantService.store(storedOAuth2Request, tokenRequest);
		OAuth2AccessToken accessToken = getTokenGranter().grant("implicit", tokenRequest);
		if (accessToken == null) {
			throw new UnsupportedResponseTypeException("Unsupported response type: token");
		}
		return new ModelAndView(new RedirectView(appendAccessToken(authorizationRequest, accessToken), false, true, false));
	}
	catch (OAuth2Exception e) {
		return new ModelAndView(new RedirectView(getUnsuccessfulRedirect(authorizationRequest, e, true), false, true, false));
	}
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:16,代码来源:AuthorizationEndpoint.java


示例18: testRefreshedTokenHasScopes

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Test
public void testRefreshedTokenHasScopes() throws Exception {
	ExpiringOAuth2RefreshToken expectedExpiringRefreshToken = new DefaultExpiringOAuth2RefreshToken(
			"testToken", new Date(System.currentTimeMillis() + 100000));
	tokenStore.storeRefreshToken(expectedExpiringRefreshToken,
			createAuthentication());
	TokenRequest tokenRequest = new TokenRequest(Collections.singletonMap(
			"client_id", "id"), "id", null, null);
	OAuth2AccessToken refreshedAccessToken = getTokenServices()
			.refreshAccessToken(expectedExpiringRefreshToken.getValue(),
					tokenRequest);
	assertEquals("[read, write]", refreshedAccessToken.getScope().toString());
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:14,代码来源:AbstractTestDefaultTokenServices.java


示例19: testRefreshedTokenHasNarrowedScopes

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Test
public void testRefreshedTokenHasNarrowedScopes() throws Exception {
	ExpiringOAuth2RefreshToken expectedExpiringRefreshToken = new DefaultExpiringOAuth2RefreshToken(
			"testToken", new Date(System.currentTimeMillis() + 100000));
	tokenStore.storeRefreshToken(expectedExpiringRefreshToken,
			createAuthentication());
	TokenRequest tokenRequest = new TokenRequest(Collections.singletonMap(
			"client_id", "id"), "id", Collections.singleton("read"), null);
	OAuth2AccessToken refreshedAccessToken = getTokenServices()
			.refreshAccessToken(expectedExpiringRefreshToken.getValue(),
					tokenRequest);
	assertEquals("[read]", refreshedAccessToken.getScope().toString());
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:14,代码来源:AbstractTestDefaultTokenServices.java


示例20: testRefreshedTokenInvalidWithWrongClient

import org.springframework.security.oauth2.provider.TokenRequest; //导入依赖的package包/类
@Test(expected = InvalidGrantException.class)
public void testRefreshedTokenInvalidWithWrongClient() throws Exception {
	ExpiringOAuth2RefreshToken expectedExpiringRefreshToken = new DefaultExpiringOAuth2RefreshToken(
			"testToken", new Date(System.currentTimeMillis() + 100000));
	tokenStore.storeRefreshToken(expectedExpiringRefreshToken,
			createAuthentication());
	TokenRequest tokenRequest = new TokenRequest(Collections.singletonMap(
			"client_id", "wrong"), "wrong", null, null);
	OAuth2AccessToken refreshedAccessToken = getTokenServices()
			.refreshAccessToken(expectedExpiringRefreshToken.getValue(),
					tokenRequest);
	assertEquals("[read]", refreshedAccessToken.getScope().toString());
}
 
开发者ID:jungyang,项目名称:oauth-client-master,代码行数:14,代码来源:AbstractTestDefaultTokenServices.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

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

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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