Pregunta

Estoy tratando de consultar algo de la base de datos del mitin.En este momento, solo estoy tratando de asegurarme de que pueda pasar inicialmente.Este código:

//create rallyrest object
RallyRestApi restApi = new RallyRestApi(new URI(hostname), username, password);
restApi.setApplicationName("QueryTest");
restApi.setWsapiVersion("v2.0");
restApi.setApplicationVersion("1.1");
System.out.println("1: So far, so good -- RallyRestApi object created");

    try {

        //create query request
        String type = "HierarchicalRequirement";
        QueryRequest qreq = new QueryRequest(type);
        System.out.println("2: Still going -- Query Request Created");

        //set fetch, filter, and project
        qreq.setFetch(new Fetch("Name","FormattedID"));
        qreq.setQueryFilter(new QueryFilter("Name", "contains", "freight"));
        qreq.setProject(projectNumber);

        System.out.println("3: Going strong -- Fetch, Filter, and Project set");

        //create response from query********Blows up
        QueryResponse resp = restApi.query(qreq);
        System.out.println("4: We made it!");

    } catch (Exception e) {
    System.out.println("Error: " + e);
    }
    finally {
        restApi.close();
    }
  }

me da este error:

Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 22
at com.google.gson.JsonParser.parse(JsonParser.java:65)
at com.google.gson.JsonParser.parse(JsonParser.java:45)
at com.rallydev.rest.response.Response.<init>(Response.java:25)
at com.rallydev.rest.response.QueryResponse.<init>(QueryResponse.java:18)
at com.rallydev.rest.RallyRestApi.query(RallyRestApi.java:227)
at RQuery.main(RQuery.java:65)

Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 22
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1386)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:531)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:414)
at com.google.gson.JsonParser.parse(JsonParser.java:60)
... 5 more
Java Result: 1

¿Podría alguien explicar por qué está sucediendo esto?¿Está mal mi código?Si necesito hacer lo que sugiere el error y configura JSON.lenient (VERDADERO), dame instrucciones sobre cómo hacerlo con mi código.

¡Gracias!

¿Fue útil?

Solución

Tu código funciona para mí. No veo nada malo con el código. Pruebe diferentes consultas, tal vez hay algunos personajes adicionales. Consulte esta publicación - Se mencionó un caso con los caracteres de NUL (\ 0). Tal vez necesite establecer lo verdadero, pero no sé cómo hacerlo: no hay acceso directo a él cuando trabaje con Rally QueryResponse.

La razón para probar una consulta diferente es que hay dos factores locales: su entorno Java y sus datos. Malformedjsonexception indica que Bad JSON que apunta a los datos. Solo está buscando "NOMBRE" y "FORMATTEDID", así que es probable que el culpable esté en algún lugar en el nombre. Pruebe una consulta diferente, por ejemplo. (FormattedID = US123), pero elige la historia que no contiene "flete" en el nombre. Establezca que al menos una consulta en particular funciona, indicará aún más que el problema está relacionado con los datos, y no el entorno.

Siguiente, intente la misma consulta (nombre contiene "flete") directamente en ws api < / a>, que es un documento interactivo donde se pueden probar las consultas. Un equivalente a la consulta en su código también se puede pegar en el navegador:

https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/123&query=(Name%20contains%20%22fraight%22)&start=1&pagesize=200&fetch=Name,FormattedID

Asegúrese de reemplazar 123 en /workspace/123 con el OID válido de su espacio de trabajo.

¿El retorno de la consulta o usted ve el mismo error en el navegador? Si la consulta vuelve, ¿cuál es el total deResResultCount?

El recuento de resultados totales ayudará a solucionar problemas. Puede ejecutar su código una página a la vez, y conocer el total de TotalResultCount es posible manipular páginas, iniciar y limitar para limitar su código a la página donde existe la historia culpable (asumiendo que hay una historia culpable). Aquí hay un ejemplo:

qreq.setpagesize (200); qreq.setstart (2); qreq.setlimit (200);

Pagingize MAXIMO es 200. El valor predeterminado es 20. El número real para usar depende de TOTALRESULTCOUNT. El índice de inicio para las consultas comienza en 1. El valor predeterminado es 1. En este ejemplo, comenzamos con la segunda página

Mi entorno es Java SE 1.6 y estos frascos:

httpcore-4.2.4.jar

httpclient-4.2.5.jar

logging commons-1.1.1.jar

commons-codec-1.6.jar

gson-2.2.4.jar

Rally-Rest-Api-2.0.4.jar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top