curl: (7) couldn't connect to host

We use JIRA OnDemand. We are trying to access JIRA rest APi to add a comment.
When we run following Curl command from our Linux Machine 

curl -D- -u <User>:<pass> -X -POST -H "Content-type: application/json"  -d"TEST" https://sungardvaldi.atlassian.net/rest/api/2/issue/<JIRA_ID>/comment

We get Error "Couldn't resolve host 'sungardvaldi.atlassian.net'

However, we can directly access the link through browser "https://sungardvaldi.atlassian.net/rest/api/2/issue/<JIRA_ID>/comment"

 So we tried using JavaScript to do this

var xmlHttpReq = false;
var self = this;
self.xmlHttpReq = new XMLHttpRequest();
self.xmlHttpReq.open("POST", "https://sungardvaldi.atlassian.net/rest/api/2/issue/<JIRA_ID>/comment", true);
self.xmlHttpReq.setRequestHeader("Content-Type", "application/json");
self.xmlHttpReq.setRequestHeader("Authorization", "Basic " + Base64.encode(<User> + ":" + <Pass>));
self.xmlHttpReq.send("{\"format\":\"json\",\"pattern\":\"#\"}");

When We run this script, we get error "Failed to load resource: the server responded with a status of 400 (Bad Request)"

Can anyone please assist, what are we doing wrong here and how can we achieve this?

Should we get IP and host of our JIRA from our Administrator and try the Curl again? 

6 answers

1 accepted

0 vote

Hello Vaibhav,

Please, find bellow a tested implementation to post a comment to an issue (http://example.com:8080/jira/rest/api/2/issue/{issueIdOrKey}/comment [GETPOST]) in JIRA Cloud:

// Method POST
 
// [USERNAME], i.e.: myuser
// [PASSWORD], i.e.: mypassword
// [COMPANY], i.e.: sungardvaldi
// [ISSUE], i.e.: COMM-1

var postJSON = function(url, data, successHandler, errorHandler) {
  var xhr = typeof XMLHttpRequest != 'undefined'
    ? new XMLHttpRequest()
    : new ActiveXObject('Microsoft.XMLHTTP');
  xhr.open('post', url, true);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.setRequestHeader("Authorization", "Basic " + btoa("[USERNAME]:[PASSWORD]"));
  xhr.onreadystatechange = function() {
    var status;
    var data;
    // https://xhr.spec.whatwg.org/#dom-xmlhttprequest-readystate
    if (xhr.readyState == 4) { // `DONE`
      status = xhr.status;
      if (status == 200) {
        data = JSON.parse(xhr.responseText);
        successHandler &amp;&amp; successHandler(data);
      } else {
        errorHandler &amp;&amp; errorHandler(status);
      }
    }
  };
  xhr.send(data);
};

postJSON('https://[COMPANY].atlassian.net/rest/api/2/issue/[ISSUE]/comment', 
'{"body":"My Comment from Javascript"}',
function(data){
	console.log(data);
}, function(status){
	console.log(status);
});

If you find this answer useful, I would kindly ask you to accept it so the same will be visible to others who might be facing the same issue you have inquired.

Thank you for your understanding.

Kind regards,
Rafael P. Sperafico
Atlassian Support

0 vote

Hello Vaibhav,

Thank you for your question.

Could you please run the following from Linux box and attach its response:

ping sungardvaldi.atlassian.net
telnet sungardvaldi.atlassian.net 443

The following command returns general information about the current JIRA server. Please, refer to http://example.com:8080/jira/rest/api/2/serverInfo [GET] for further information.

 

# [USERNAME], i.e.: myuser
# [DOMAIN], i.e.: mycompany
curl -D- -u [USERNAME] -p -H "Content-Type: application/json" -X GET https://[DOMAIN].atlassian.net/rest/api/2/serverInfo

Kind regards,
Rafael P. Sperafico
Atlassian Support

HI Rafael,

I cant ping or telnet 'sungardvaldi.atlassian.net' from Linux mahine as well as  from Windows Desktop.

Please see the result below.

C:\Program Files (x86)\Google\Chrome\Application>ping sungardvaldi.atlassian.net

Pinging sungardvaldi.atlassian.net [165.254.226.66] with 32 bytes of data:
Request timed out.
Request timed out.

 

 

C:\Program Files (x86)\Google\Chrome\Application>telnet sungardvaldi.atlassian.n
et 443
Connecting To sungardvaldi.atlassian.net...Could not open connection to the host
, on port 443: Connect failed

However, we can directly access the link through browser "https://sungardvaldi.atlassian.net"

We also executed the given Curl command to get ServerInfo 
curl -D- -u [USERNAME] -p -H "Content-Type: application/json" -X GET https://[DOMAIN].atlassian.net/rest/api/2/serverInfo

Although, this curl also resulted into "Couldn't connect to host" but the link opened on browser.

But ServerInfo didn't give us IP/Port, it just gives the base Url "baseUrl":"https://sungardvaldi.atlassian.net".

Can you please also suggest why the below JavaScript results into "400: Bad Request" and how can we fix it.

 

We assume that since the link can be opened on browser, HTTP post through JavaScript should work.

var xmlHttpReq = false;
var self = this;
self.xmlHttpReq = new XMLHttpRequest();
self.xmlHttpReq.open("POST", "https://sungardvaldi.atlassian.net/rest/api/2/issue/<JIRA_ID>/comment", true);
self.xmlHttpReq.setRequestHeader("Content-Type", "application/json");
self.xmlHttpReq.setRequestHeader("Authorization", "Basic " + Base64.encode(<User> + ":" + <Pass>));

0 vote

Hello Vaibhav,

It has come to my mind you might have a web proxy in place and this would explain the reason for being able to access https://sungardvaldi.atlassian.net from your web browser but not from Command Prompt / Terminal. Could you please verify with your network administrator this matter?

Kind regards,
Rafael P. Sperafico
Atlassian Support

Thanks Rafael,

We have web proxy and that is the reason we are able to access it from our web browser.

Lets focus on why we are not able to do it via JavaScript as the URLs are accessible through web browser.
var xmlHttpReq = false;
var self = this;
self.xmlHttpReq = new XMLHttpRequest();
self.xmlHttpReq.open("POST", "https://sungardvaldi.atlassian.net/rest/api/2/issue/<JIRA_ID>/comment", true);
self.xmlHttpReq.setRequestHeader("Content-Type", "application/json");
self.xmlHttpReq.setRequestHeader("Authorization", "Basic " + Base64.encode(<User> + ":" + <Pass>));

self.xmlHttpReq.send("{"body": "This is a comment regarding the quality of the response."}");

 When i ran this script on web browser,  i get error 400: Bad Request.  Are we missing something on JasonFormat data ?

When we ran the same script on another machine, we get error "403: Forbidden".

Can you please take a look.

 

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Monday in Jira Software

How large do you think Jira Software can grow?

Hi Atlassian Community! My name is Shana, and I’m on the Jira Software team. One of the many reasons this Community exists is to connect you to others on similar product journeys or with comparabl...

578 views 6 12
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you