API REST for create a ticket in JWM using DART

Hi Everyone!,

I’m stuck here. I have this code that is in dart.

import 'dart:convert';
import 'package:dio/dio.dart';
main() async {
  const jiraApiUrl = 'https://proyectosgmb.atlassian.net/rest/api/2/issue';
  const projectKey = 'ACR';
  const userJira = 'lbowen@robotilsa.com';
  const tokenJira = 'ATATT...9A';
  Map<String, dynamic> requestData = {
      'fields': {
        'project': {'key': projectKey},
        'summary': 'HOLA',
        'description': "description",
        'issuetype': {'name': 'Task'}
      }
    };
    String requestBody = jsonEncode(requestData);
  try {
      final response = await Dio().post(
jiraApiUrl,
data: requestBody,
        options: Options(
          method: 'POST',
          headers: <String, String>{
            'X-Atlassian-Token': 'no-check', 
            'Content-Type': 'application/json',
             'Accept': 'application/json', 
              'Access-Control-Allow-Methods': 'OPTIONS, GET, PUT, DELETE',
              'Access-Control-Allow-Credentials': 'true',
              'Access-Control-Expose-Headers': 'Origin, Authorization, Content-Type',          
            'Authorization':
                'Basic ${base64Encode(utf8.encode('$userJira:$tokenJira'))}',
          }
        )
      );
if (response.statusCode != 201) {
        print("GOOD");
      }
      return response.statusCode == 201;
    } catch (e) {
      print("ERROR JIRA: $e");
      return false;
    }
}

It returns : DioException [connection error]: The connection errored: The XMLHttpRequest onError callback was called. This typically indicates an error on the network layer.

However, if i used the same code in python or if i use postman it works:

import requests
import json
from requests.auth import HTTPBasicAuth
def create_jira_task(titulo, description):
    jira_api_url = 'https://proyectosgmb.atlassian.net/rest/api/2/issue'
    project_key = 'ACR'
    user_jira = 'lbowen@robotilsa.com'
    token_jira = 'ATATT...9A'
    request_data = {
        'fields': {
            'project': {'key': project_key},
            'summary': titulo,
            'description': description,
            'issuetype': {'name': 'Task'}
        }
    }
    request_body = json.dumps(request_data)
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Basic {user_jira}:{token_jira}'
    }
    try:
        # Realizar la solicitud POST a la API de Jira
        response = requests.post(
            jira_api_url,
            headers=headers,
            data=request_body.encode('utf-8'),
            auth=HTTPBasicAuth(user_jira, token_jira)
        )
        print("Status Code:", response.status_code)
        print("Body response", response.content)
        if response.status_code != 201:
            print("Error al crear la tarea en Jira")
            return False
        return True
    except Exception as e:
        print("Error Jira:", e)
        return False
titulo = "Título de la tarea"
descripcion = "Descripción de la tarea"
create_jira_task(titulo, descripcion)

Hallo! Es scheint, dass Sie Probleme mit Ihrem Dart-Code haben, der eine Anfrage an die Jira-API sendet. Der Fehler, den Sie erhalten, deutet auf ein Netzwerkproblem hin. Hier sind einige mögliche Lösungen:

  1. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Ihr Gerät eine stabile Internetverbindung hat.

  2. Überprüfen Sie die URL: Stellen Sie sicher, dass die URL korrekt ist und dass der Jira-Server erreichbar ist. Sie können dies testen, indem Sie die URL in einem Webbrowser öffnen.

  3. Überprüfen Sie die Anforderungsheader: Stellen Sie sicher, dass alle erforderlichen Header korrekt sind. Insbesondere der ‘Authorization’-Header, der das Basis-Token enthält, muss korrekt formatiert sein.

  4. CORS (Cross-Origin Resource Sharing) Problem: In einigen Fällen kann dieses Problem auftreten, wenn Sie versuchen, eine Anfrage von einer anderen Domain aus zu senden, als die, auf der der Server gehostet wird. Sie könnten versuchen, einen Proxy-Server zu verwenden, um dieses Problem zu umgehen.

  5. Überprüfen Sie die Serverantwort: Es könnte auch hilfreich sein, die vollständige Antwort des Servers zu überprüfen, um weitere Informationen über das Problem zu erhalten. Sie können dies tun, indem Sie print(response.toString()) in Ihrem Dart-Code hinzufügen.

Bitte beachten Sie, dass dies allgemeine Ratschläge sind und dass die genaue Lösung von den spezifischen Details Ihres Problems abhängen kann. Wenn Sie weitere Informationen oder eine genauere Fehlermeldung haben, kann ich Ihnen möglicherweise eine spezifischere Hilfe anbieten. Ich hoffe, das hilft! :blush:

2von30

Hi @Gionniscarsi2 ,

Thanks for the info. However, As I mentioned in the post the code with python and postman is working so I think the option 1, 2 and 3 could be discarded.

Option 5: The server didn’t give me any response it just go into the exception that is getting from the try/catch.
And the message is: ioException [connection error]: The connection errored: The XMLHttpRequest onError callback was called. This typically indicates an error on the network layer.

Option 4: I don’t know which CORS is blocking me.