2

我正在使用Gitlab Api v3来完成一些任务。我正在使用 Java。

我可以执行所有 Get 操作,还可以通过 Post 请求创建一个新项目(使用管理员用户的私有令牌)

现在我正试图将这个项目转移到一个特定的组。但是我很难理解如何使用文档“将项目转移到组”中给出的信息来创建发布请求(用 Java 语言) 。

预先感谢您的帮助

编辑:我的代码

    public void moveProjectToGroup(String projectName, String groupName) throws IOException
{
    int id_project = getProjectId(projectName); //32
    int id_group = getGroupId(groupName); //14

    System.out.println("project id:"+id_project+"\t group id:"+id_group);


    String urlParameters = "groups/:"+id_group+"/projects/:"+id_project;


    System.out.println(remote); // http://mygitlab/api/v3/
    System.out.println(remote+urlParameters); //http://mygitlab/api/v3/groups/:14/projects/:32

    URL url = new URL(remote); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    connection.setRequestProperty("charset", "utf-8");
    connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
    connection.setRequestProperty("PRIVATE-TOKEN", "7wHppgzq4HxbxvZVWyso"); // my admin token
    connection.setUseCaches (false);

    DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
    wr.writeBytes(urlParameters);
    wr.flush();
    wr.close();
    connection.disconnect();
}
4

2 回答 2

1

我的问题的解决方案是添加路径并调整urlParameters

public void moveProjectToGroup(String projectName, String groupName) throws IOException
{
    int id_project = getProjectId(projectName); //32
    int id_group = getGroupId(groupName); //14

    String path = "groups/"+id_group+"/projects/"+id_project;
    String urlParameters = "id="+id_group+"&projectid="+id_project;



    //String urlParameters = "name="+name;

    URL url_request = new URL(remote+path);
    System.out.println(url_request.toString());

    HttpURLConnection url_con = (HttpURLConnection) url_request.openConnection();           

    url_con.setDoOutput(true);
    url_con.setDoInput(true);
    url_con.setInstanceFollowRedirects(false); 
    url_con.setRequestMethod("POST"); 
    url_con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    url_con.setRequestProperty("charset", "utf-8");
    url_con.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
    url_con.setRequestProperty("PRIVATE-TOKEN", "7wHppgzq4HxbxvZVWyso"); // my admin token
    url_con.setUseCaches (false);

    OutputStreamWriter writer = new OutputStreamWriter(url_con.getOutputStream());

    writer.write(urlParameters);
    writer.flush();

    String line;
    BufferedReader reader = new BufferedReader(new InputStreamReader(url_con.getInputStream()));

    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    writer.close();
    reader.close(); 
    url_con.disconnect();
}
于 2013-05-03T08:25:20.573 回答
1

您可以尝试按照“ Java - 通过 POST 方法轻松发送 HTTP 参数”中描述的方法,除了String urlParameters,您可以将所述参数替换为“将项目转移到组”部分中提到的参数:

String id            = ... // (the right group id);
String project_id    = ... // (the right project id);
String urlParameters = "/groups/:"+id+"/projects/:"+project_id;
于 2013-05-03T05:43:53.927 回答