Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用RESTAPI连接VSTS Azure Devops?我没有得到这方面的任何java文档_Java_Tfs_Azure Devops - Fatal编程技术网

如何在java中使用RESTAPI连接VSTS Azure Devops?我没有得到这方面的任何java文档

如何在java中使用RESTAPI连接VSTS Azure Devops?我没有得到这方面的任何java文档,java,tfs,azure-devops,Java,Tfs,Azure Devops,我需要使用java中的RESTAPI连接VSTS服务器。我已经阅读了微软提供的文档,但是对于c,我需要java的java程序示例,是否有微软为VSTS发布的jar,因为我找不到任何与此相关的jar。使用c我可以连接VST,但我需要一些java的示例代码 我在c中使用的示例代码是: public static async void GetProjects() { try { var personalaccesstoken = "PAT_FROM_WEBSITE"; using (

我需要使用java中的RESTAPI连接VSTS服务器。我已经阅读了微软提供的文档,但是对于c,我需要java的java程序示例,是否有微软为VSTS发布的jar,因为我找不到任何与此相关的jar。使用c我可以连接VST,但我需要一些java的示例代码

我在c中使用的示例代码是:

public static async void GetProjects()
{
try
{
    var personalaccesstoken = "PAT_FROM_WEBSITE";

    using (HttpClient client = new HttpClient())
    {
        client.DefaultRequestHeaders.Accept.Add(
            new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
            Convert.ToBase64String(
                System.Text.ASCIIEncoding.ASCII.GetBytes(
                    string.Format("{0}:{1}", "", personalaccesstoken))));

        using (HttpResponseMessage response = await client.GetAsync(
                    "https://dev.azure.com/{organization}/_apis/projects"))
        {
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}
}

这是我第一次体验java

尝试获取工作项:

package com.restapi.sample;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.Scanner;

import org.apache.commons.codec.binary.Base64;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class ResApiMain {

    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";

    public static void main(String[] args) {

        try {

            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);
            System.out.println("URL - " + url.toString());
            System.out.println("PAT - " + encodedPAT);
            con.setRequestMethod("GET");

            int status = con.getResponseCode();

            if (status == 200){
                String responseBody;
                try (Scanner scanner = new Scanner(con.getInputStream())) {
                    responseBody = scanner.useDelimiter("\\A").next();
                    System.out.println(responseBody);
                }

                try {
                    Object obj = new JSONParser().parse(responseBody);
                    JSONObject jo = (JSONObject) obj;

                    String WIID = (String) jo.get("id").toString();
                    Map<String, String> fields = (Map<String, String>) jo.get("fields");
                    System.out.println("WorkItemId - " + WIID);
                    System.out.println("WorkItemTitle - " + fields.get("System.Title"));
                } catch (ParseException e) {
                // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }           

            con.disconnect();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
其他罐子:

使用json 要使用base64编码,请执行以下操作: 处理请求的示例:

检查eclipse控制台中生成的url:

Stack Overflow不是一种用您选择的语言为您编写代码的服务。daniel我在上一篇文章中已经提供了代码,我在java中使用了连接,但获得了连接refused@RajeshBhardwaj如果您有一个您尝试过的代码示例,那么您应该将其添加到您的问题中,以及对堆栈跟踪的提取,以及您面临的确切错误。然后您将有更高的机会收到高质量的响应我已将此项目eclipse neon 4.6.3导出到github:Hi@shamrai我已尝试使用您提供的代码,但收到错误:java.net.ConnectException:Connection timed out:connect at java.net.DualStackPlainSocketImpl.connect0Native方法atjava.net.DualStackPlainSocketImpl.socketConnectUnknown源位于java.net.AbstractPlainSocketImpl.doConnectUnknown源该示例在我的vm中有效@RajeshBhardwaj尝试将生成的url传递到浏览器。或者您的网络中存在某个代理。谢谢,伙计,实际上我已经有了一个用于连接本地tfs的代码,但是在尝试使用azure tfs时出现连接超时错误,我终于解决了这个问题。问题主要是在令牌生成设置中,当我尝试获取一个WORTIMES时,使用您的代码,我得到的错误为400