cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
iperezal Frequent Visitor
Frequent Visitor

Rest api usage with Java

There is any code example about how to use Rest api from Java?

1 ACCEPTED SOLUTION

Accepted Solutions
Moderator Eric_Zhang
Moderator

Re: Rest api usage with Java

@iperezal

 

Check this Github repository satalyst/powerbi-rest-java.

The code snippet

 

public class Office365Authenticator implements Authenticator {
    private static final String DEFAULT_AUTHORITY = "https://login.windows.net/common/oauth2/authorize";
    private static final String DEFAULT_POWER_BI_RESOURCE_ID = "https://analysis.windows.net/powerbi/api";
    private static final boolean DEFAULT_VALIDATE_AUTHORITY = false;
    private String authority = DEFAULT_AUTHORITY;
    private String powerBiResourceId = DEFAULT_POWER_BI_RESOURCE_ID;
    private boolean validateAuthority = DEFAULT_VALIDATE_AUTHORITY;
    private String nativeClientId;
    private String tenant;
    private String username;
    private String password;

    private ExecutorService executor;
    private ReadWriteLock tokenLock = new ReentrantReadWriteLock();
    private String cachedToken;

    private String _authenticate() throws AuthenticationFailureException {
        try {
            AuthenticationContext authenticationContext = new AuthenticationContext(
                    authority,
                    validateAuthority,
                    executor
            );

            String result = getAccessToken(
                    authenticationContext,
                    powerBiResourceId,
                    nativeClientId,
                    username + "@" + tenant,
                    password
            );

            if (StringUtils.isEmpty(result)) {
                throw new AuthenticationFailureException("Returned access token is null.");
            }

            return result;
        } catch (ExecutionException | InterruptedException | IOException e) {
            throw new AuthenticationFailureException(e);
        }
    }

    private String getAccessToken(AuthenticationContext authenticationContext, String resourceId, String clientId,
                                  String username, String password) throws ExecutionException, InterruptedException {
        return authenticationContext.acquireToken(
                resourceId,
                clientId,
                username,
                password,
                null
        ).get().getAccessToken();
    }
}

 

 

7 REPLIES 7
Moderator Eric_Zhang
Moderator

Re: Rest api usage with Java

@iperezal

 

Various resource on the Internet.

RESTful Java client with java.net.URL

Using REST in Java

Consuming REST services from Java applications

 

You could find more examples in Github.

iperezal Frequent Visitor
Frequent Visitor

Re: Rest api usage with Java

But, there aren't any examples about PowerBI Rest API and his Auth in Java Smiley Sad

 

I cannot authenticate from Java. I only can from C# and i need Java code

Highlighted
Power BI Team jocaplan-MSFT
Power BI Team

Re: Rest api usage with Java

Azure AD has a Java library that you can use: https://github.com/AzureAD/azure-activedirectory-library-for-java

Moderator Eric_Zhang
Moderator

Re: Rest api usage with Java

@iperezal

 

Check this Github repository satalyst/powerbi-rest-java.

The code snippet

 

public class Office365Authenticator implements Authenticator {
    private static final String DEFAULT_AUTHORITY = "https://login.windows.net/common/oauth2/authorize";
    private static final String DEFAULT_POWER_BI_RESOURCE_ID = "https://analysis.windows.net/powerbi/api";
    private static final boolean DEFAULT_VALIDATE_AUTHORITY = false;
    private String authority = DEFAULT_AUTHORITY;
    private String powerBiResourceId = DEFAULT_POWER_BI_RESOURCE_ID;
    private boolean validateAuthority = DEFAULT_VALIDATE_AUTHORITY;
    private String nativeClientId;
    private String tenant;
    private String username;
    private String password;

    private ExecutorService executor;
    private ReadWriteLock tokenLock = new ReentrantReadWriteLock();
    private String cachedToken;

    private String _authenticate() throws AuthenticationFailureException {
        try {
            AuthenticationContext authenticationContext = new AuthenticationContext(
                    authority,
                    validateAuthority,
                    executor
            );

            String result = getAccessToken(
                    authenticationContext,
                    powerBiResourceId,
                    nativeClientId,
                    username + "@" + tenant,
                    password
            );

            if (StringUtils.isEmpty(result)) {
                throw new AuthenticationFailureException("Returned access token is null.");
            }

            return result;
        } catch (ExecutionException | InterruptedException | IOException e) {
            throw new AuthenticationFailureException(e);
        }
    }

    private String getAccessToken(AuthenticationContext authenticationContext, String resourceId, String clientId,
                                  String username, String password) throws ExecutionException, InterruptedException {
        return authenticationContext.acquireToken(
                resourceId,
                clientId,
                username,
                password,
                null
        ).get().getAccessToken();
    }
}

 

 

gopinath Frequent Visitor
Frequent Visitor

Re: Rest api usage with Java

Hi....

 

Any body give the java code for create dataset using power bi API...Advance in thanks...

 

Regards,

Gopinath M

gopinath Frequent Visitor
Frequent Visitor

Re: Rest api usage with Java

Hello,

 

I just created the API using above java code and I dont how to check the above mentioned maven project...

can you please provided step by step instructions to check the above API?I.e create dataset,add dataset..

 

Thanks,

Gopinath Madhavan

 

d_u_a Regular Visitor
Regular Visitor

Re: Rest api usage with Java

@Eric_Zhang
In this code snippet   

authority, validateAuthority, executor (authenticationContext )? - How should i fill these values? what do they means ?

powerBiResourceId? - Where is this id , what does it means?
nativeClientId - I'm making a web app (not native app) and this will be ApplicationId in  Azure? 
username + "@" + tenant - I know this
password - I know this