2015-05-15 4 views
-2

я получаю следующее исключение всякий раз, когда я пытаюсь извлечь дефекты из ралли:Fetch дефекта от ралли, используя ралли отдых апи v2.0

  com.google.gson.JsonSyntaxException: 
      com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 12 
      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:16) 
      at com.rallydev.rest.RallyRestApi.query(RallyRestApi.java:168) 
      at Test.main(Test.java:86) 
      Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 12 
      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 

Что интригует меня больше всего это код работает прекрасно на несколько машин и исключает указанное выше исключение.

фрагмент кода:

RallyRestApi restApi = 
new RallyRestApi(new URI("http://rally1.rallydev.com"),apiKey); 
QueryRequest queryRequest = new QueryRequest("defects"); 
queryRequest.setFetch(new Fetch("Project","FormattedID","Release")); 
QueryFilter filter1 = new QueryFilter("FormattedID", "=", defetctID); 
QueryResponse queryResponse1 = restApi.query(queryRequest); 
+2

Правильно отформатируйте свой код, чтобы он был легко читаемым. – Nilambar

+0

Я отредактировал фрагмент кода. проверьте его один раз – user4903111

ответ

0

Попробуйте завиток команду для чтения и тот же дефект, используя один и тот же apiKey (в zsessionid заголовке) на той же машине, с которой ваш код Java терпит неудачу.

curl --header "ZSESSIONID: _abc123" "https://rally1.rallydev.com/slm/webservice/v2.0/defect/123456789" 

По крайней мере, вы узнаете, является ли это специфичным для java или нет. Да, странно, что он терпит неудачу на некоторых машинах и работает на других, но сроки этих тестов не очевидны из вашего поста, и я задаюсь вопросом, имеет ли это какое-либо отношение к основным учетным данным пользователя. (Пользователь отключается в течение определенного периода времени после нескольких неудачных попыток). Я не уверен, что это проблема, которую вы испытываете, но я видел, когда истекший пароль вызвал ту же ошибку. Ключи API привязаны к пользователю, поэтому, когда срок действия пароля пользователя истек, или когда пользователь неактивен (отключен), в ключе отражаются одни и те же разрешения (или их отсутствие). Например, пользователь не знал, что пароль истек, потому что в пользовательском интерфейсе Rally они использовали аутентификацию SSO, но в коде они использовали либо имя пользователя/пароль, либо APIKey, так как набор инструментов не поддерживает SSO в данный момент. Ошибка 401 была бы более полезной, но вместо этого генерируется некорректный JSON.

Смежные вопросы