0

I'm trying to get the sonar scan status using get request when I use the postman to check the status. I get the output has expected. But when I'm trying using python3.6.3. It throughs below exception

Traceback (most recent call last):
 File "C:\Python37\lib\site-packages\urllib3\response.py", line 331, in 
_error_catcher
   yield
 File "C:\Python37\lib\site-packages\urllib3\response.py", line 413, in read
    data = self._fp.read(amt)
 File "C:\Python37\Lib\http\client.py", line 447, in read
    n = self.readinto(b)
 File "C:\Python37\Lib\http\client.py", line 491, in readinto
    n = self.fp.readinto(b)
 File "C:\Python37\Lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
 File "C:\Python37\Lib\ssl.py", line 1049, in recv_into
    return self.read(nbytes, buffer)
 File "C:\Python37\Lib\ssl.py", line 908, in read
    return self._sslobj.read(len, buffer)
ConnectionResetError: [WinError 10054] An existing connection was 
 forcibly closed by the remote host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
   File "C:\Python37\lib\site-packages\requests\models.py", line 749, in generate
for chunk in self.raw.stream(chunk_size, decode_content=True):
   File "C:\Python37\lib\site-packages\urllib3\response.py", line 465, in stream
data = self.read(amt=amt, decode_content=decode_content)
  File "C:\Python37\lib\site-packages\urllib3\response.py", line 430, in read
raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "C:\Python37\Lib\contextlib.py", line 130, in __exit__
self.gen.throw(type, value, traceback)
  File "C:\Python37\lib\site-packages\urllib3\response.py", line 349, in _error_catcher
raise ProtocolError('Connection broken: %r' % e, e)
urllib3.exceptions.ProtocolError: ("Connection broken: ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)", ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/vjannapureddy/Documents/testing/testingsonarapi.py", line 11, in <module>
   response = requests.request("GET", url, headers=headers, params=querystring)
   File "C:\Python37\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
  File "C:\Python37\lib\site-packages\requests\sessions.py", line 512, in request
   resp = self.send(prep, **send_kwargs)
   File "C:\Python37\lib\site-packages\requests\sessions.py", line 662, in send
r.content
   File "C:\Python37\lib\site-packages\requests\models.py", line 827, in content
self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
   File "C:\Python37\lib\site-packages\requests\models.py", line 752, in generate
raise ChunkedEncodingError(e)
requests.exceptions.ChunkedEncodingError: ("Connection broken: 
 ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)", ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

I tried running using python 3.7 which didn't work then I tried in linux environment with python3.6.3 which didn't work.

We are using SonarQube enterprise edition and it has MFA security verification.

import requests

url = "https://xxxsonarqube.xx.com/api/qualitygates/project_status"

querystring = {"analysisId" : "AWu4CtcA08Z7GjqNo7V6"}

headers = {
    'Authorization': "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }

response = requests.request("GET", url, headers=headers, 
params=querystring)

print(response.text)
print(response.status_code)

This is the output expected and works while using postman.

{
    "projectStatus": {
        "status": "ERROR",
        "conditions": [
            {
                "status": "OK",
                "metricKey": "bugs",
                "comparator": "GT",
                "errorThreshold": "0",
                "actualValue": "0"
            },
            {
                "status": "OK",
                "metricKey": "vulnerabilities",
                "comparator": "GT",
                "errorThreshold": "0",
                "actualValue": "0"
            },
            {
                "status": "ERROR",
                "metricKey": "code_smells",
                "comparator": "GT",
                "errorThreshold": "0",
                "actualValue": "72"
            }
        ],
        "periods": [],
        "ignoredConditions": false
    }
}
vampire
  • 1
  • 2
  • seems like its working using python 2.7 but not working with python 3.6 and above. But unfortunately, I can't use Python 2.7. Is there any alternate solution for this? – vampire Jul 10 '19 at 15:15

1 Answers1

0

Did u try googling the error? It seems like the error is this:

python: [Errno 10054] An existing connection was forcibly closed by the remote host

So its a server to client sided error, your python script seems ok.

MrEdinLaw
  • 76
  • 4
  • If it's a client-side error my postman should fail, but I kept spamming about 10 to 15 times and it works every single time on the other side python gives me the same result every time I run it. – vampire Jul 10 '19 at 14:01
  • 1
    seems like its working using python 2.7 but not working with python 3.6 and above. But unfortunately, I can't use Python 2.7. – vampire Jul 10 '19 at 14:38