Problems faced with REST API using python requests

melon sharma June 17, 2019

As I have seen on multiple websites and documentation, each one describes a little different method to use the JIRA API. Some use the JIRA module, some use directly request modules.

First I have explained the way I was able to create issues using session:

(1) By following the documentation, I was able to use CURL command to create a session, then storing JSESSIONID and atlassian.xsrf.token to a text file.(using curl -c cookie.txt -X POST -d {credentianls_json} -h {headers} https://XYZ.com/auth/1/session)

          *notice the endpoint is without the keyword /rest/ as opposed to the documentation.

           *when /rest/auth/1/session was used no JSESSIONID was generated, only xsrf token

 

(2) Then I was able to use this cookie.txt to create a issue. (using curl -b cookie.txt -X  POST -d {data_fields} -h {headers} https://XYZ.com/rest/api/latest/issue )

data_fields = {with all fields and projectkey in json format}

##ISSUE CREATED##

Now when I try to do the same thing with python requests.

------------trying to do the exact same steps------------------

class JiraEverything(object):
    def __init__(self, **kwargs):
       if(len(kwargs)!=2):
           raise JiraException('In order to use this class atleast provide 2 input')
        else:
          if 'username' in kwargs.keys():
             if 'password' in kwargs.keys():
              self.__username = kwargs['username']
              self.__password = kwargs['password']
           else:
              raise JiraException('No password found')
         else:
           raise JiraException('No username found')

####

  def getcookie(self):

      headers = {
        'Content-Type' : "application/json"
                    }
      params = {
        'username': self.__username,
        'password': self.__password
                   }
     try:
       r = requests.post('https://homework101.atlassian.net/auth/1/session',headers =                headers, params = params)


     except:
         raise JiraException('Could not connect to API, verify your username and password')

#####able to get CookieJar with JSESSIONID and xsrf

###trying to use this to generate new issue

    new_headers = {
         'Content-Type' : "application/json",
         'Set-Cookie' : r.headers['Set-Cookie']
                 }

      data = {with all fields and projectkey in json format}

      rr = requests.post('https://homework101.atlassian.net/rest/api/latest/issue', headers =       new_headers, data = data)

      ###########I get 400 error

I have tried with multiple endpoint like createmeta but this url works with curl command. I am not able to find any solution to this problem. If anyone has any idea what is going on. Please provide your input. Thanks

 

 

 

 

0 comments

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events