How to create a problem using bitbucket and singpost API in java

I'm trying to create a new issue on bibucket, but I don't know how to work with http. I try a lot of things but it doesn't work. This is one of my attempts:

URL url = new URL("https://api.bitbucket.org/1.0/repositories/" 
        + accountname + "/" + repo_slug + "/issues/"
        + "?title=test&content=testtest");

HttpsURLConnection request = (HttpsURLConnection) url.openConnection();       
request.setRequestMethod("POST");
consumer.sign(request);
request.connect();

      

I have no problem with GET requests. But here I don't know how to send parameters and sign the message.

Here is the API documentation https://confluence.atlassian.com/display/BITBUCKET/issues+Resource#issuesResource-POSTanewissue

How to do it right?

+3


source to share


2 answers


I finally figured it out. The parameters are not part of the url, but if you are using a stream, you cannot sign it.

The solution uses the Apache HttpComponents library and adds parameters such as in the code below:



    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("https://api.bitbucket.org/1.0/repositories/"
            + accountname + "/" + repo_slug + "/issues/");
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    nvps.add(new BasicNameValuePair("title", "test"));
    nvps.add(new BasicNameValuePair("content", "testtest"));
    httpPost.setEntity(new UrlEncodedFormEntity(nvps));
    consumer.sign(httpPost); 
    HttpResponse response2 = httpclient.execute(httpPost);

    try {
        System.out.println(response2.getStatusLine());
        HttpEntity entity2 = response2.getEntity();
        // do something useful with the response body
        // and ensure it is fully consumed
        EntityUtils.consume(entity2);
    } finally {
        httpPost.releaseConnection();
    }

}

      

But you have to use CommonsHttpOAuthConsumer, which is in the special signpost library for commonshttp.

+2


source


I saw you already solved, but here it says you need to authenticate with OAuth and on the page you linked what you need to authenticate to create new issues. He also links to this page for OAuth implementation for many languages. I am going to post it for knowledge.



+1


source







All Articles