Вызов Azure Migrate Rest Api с использованием Azure SDK для Java - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сделать запрос PUT для создания проекта в azure, мигрировать с весенней загрузкой. Ранее я делал с шаблоном отдыха. Как шаблон @Autowire RestTemplate;

HttpHeaders headers = new HttpHeaders (); headers.setContentType (MediaType.APPLICATION_FORM_URLENCODED);

    MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
    map.add("grant_type", assessment.getGrant_type());
    map.add("client_id", assessment.getClient_id());
    map.add("client_secret", assessment.getClient_secret());
    map.add("code", authToken);

    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
    ResponseEntity<String> response = restTemplate.exchange(baseUrl, HttpMethod.POST, request, String.class);

authToken Я получаю отдельный вызов GET для URL-адреса аутентификации до вызова POST и настройки в заголовке POST.

Я публикую частичный код чтобы вы могли понять, что я делаю.

Теперь меня попросили использовать Azure -sdk для java для написания того же кода. Мне не нужно использовать Rest Template. Может кто-нибудь сказать мне, как я могу сделать POST-вызов, используя Azure -sdk для java классов. Я ищу в Google и вы, но ничего конкретного не найдено.

С уважением, Прабха sh Мишра

1 Ответ

0 голосов
/ 17 апреля 2020

Если вы хотите использовать Azure java sdk для вызова Azure rest API, обратитесь к следующему коду

a. создать субъект службы (для этого я использую Azure CLI)

az login
az account set --subscription "<your subscription id>"
# the sp will have Azure Contributor role
az ad sp create-for-rbac -n "readMetric" 

enter image description here

Установка SDK
<!-- https://mvnrepository.com/artifact/com.microsoft.azure/azure -->
<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure</artifactId>
    <version>1.33.0</version>
</dependency>

Код
 private static String tenantId="hanxia.onmicrosoft.com"; // sp tenant
    private static String clientId = "42e0d080-b1f3-40cf-8db6-c4c522d988c4"; // sp appid

    private static String clientKey = "Gbx*************JDfQpIjoae:";// sp password
    private static String subscriptionId="e5b0fcfa-e859-43f3-8d84-5e5fe29f4c68"; //sp subscription id

ApplicationTokenCredentials creds = new
                ApplicationTokenCredentials(clientId,tenantId,clientKey, AzureEnvironment.AZURE);

        RestClient restClient =new RestClient.Builder()
                .withBaseUrl(AzureEnvironment.AZURE, AzureEnvironment.Endpoint.RESOURCE_MANAGER)
                .withSerializerAdapter(new AzureJacksonAdapter())
                .withReadTimeout(150, TimeUnit.SECONDS)
                .withLogLevel(LogLevel.BODY)
                .withResponseBuilderFactory(new AzureResponseBuilder.Factory())
                .withCredentials(creds)
                .build();
        OkHttpClient httpClient = restClient.httpClient().newBuilder().build();
        String url="https://management.azure.com/subscriptions/"+subscriptionId+"/providers/Microsoft.Migrate/projects?api-version=2018-02-02";
        Request request = new Request.Builder()
                              .url(url)
                              .method("get",null)
                              .build();
        Response response1 = httpClient.newCall(request).execute();
        if(response1.isSuccessful()){

            System.out.println(response1.headers().toString());

        }

enter image description here

...