【问题标题】:Using rest api of azure devops使用 azure devops 的 rest api
【发布时间】:2022-07-17 02:25:23
【问题描述】:

我想使用 Java 从 Azure Devops 的其余 api 获取数据。但不知道如何建立连接。可能是个人访问令牌会有所帮助,但是如何在代码中使用令牌来建立代码和之间的连接天蓝色的开发?任何人的例子都会很有帮助。

一个代码示例会很有帮助

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java rest azure-devops azure-devops-rest-api


【解决方案1】:

如果我对您的理解正确,您正在尝试调用 azure API,而这些 API 需要授权令牌?

例如这个用于将数据发送到 Azure 队列的 azure API:https://docs.microsoft.com/en-us/rest/api/servicebus/send-message-to-queue

它需要一些负载和请求头中的授权!!


如果我的理解是正确的,那么从 java 你需要使用任何 rest 客户端HTTP 客户端调用 REST API 并且你需要在请求头中传递Authorization令牌

在 java 中调用 Rest API 并传递以下标头是一个示例:

MultiValueMap<String, String> map= new LinkedMultiValueMap<>();
map.add("Authorization", "Bearer <Azure AD JWT token>"); // set your token here

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); //someother http headers you want to set

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);

RestTemplate restTemplate = new RestTemplate();
String azure_url = "https://azure_url"; // your azure devops REST URL

ResponseEntity<String> response = restTemplate.postForEntity(azure_url, request , String.class);

【讨论】:

  • 谢谢你得到我想要的,我明白需要做什么。你能向我解释一下代码吗。我是这一切的初学者。
【解决方案2】:

httpclient 的一个小例子:

static String ServiceUrl = "https://dev.azure.com/<your_org>/";
static String TeamProjectName = "your_team_project_name";
static String UrlEndGetWorkItemById = "/_apis/wit/workitems/";
static Integer WorkItemId = 1208;
static String PAT = "your_pat";

String AuthStr = ":" + PAT;
Base64 base64 = new Base64();
        
String encodedPAT = new String(base64.encode(AuthStr.getBytes()));
        
URL url = new URL(ServiceUrl + TeamProjectName + UrlEndGetWorkItemById + WorkItemId.toString());
HttpURLConnection con = (HttpURLConnection) url.openConnection();
        
con.setRequestProperty("Authorization", "Basic " + encodedPAT);
con.setRequestMethod("GET");
        
int status = con.getResponseCode();

文件链接:ResApiMain.java

【讨论】:

    【解决方案3】:

    您可以将 java 客户端库用于 azure devops rest api。这将承担编码您的个人访问令牌的重载,并且确实支持 OAuth 身份验证。

    它已被积极开发并用于生产。

    源码-https://github.com/hkarthik7/azure-devops-java-sdk

    文档 - https://azure-devops-java-sdk-docs.readthedocs.io/en/latest/?badge=latest

    【讨论】:

      猜你喜欢
      • 2020-06-12
      • 1970-01-01
      • 2021-03-10
      • 2019-10-24
      • 2021-04-19
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多