2013-05-09 287 views
1

我試圖運行示例Java程序來檢索來自集會的前5個缺陷。我收到以下錯誤:引起:com.google.gson.stream.MalformedJsonException:第1行第21列的預期EOF

 
Querying for top 5 highest priority unfixed defects... 
Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 21 
    at com.google.gson.JsonParser.parse(JsonParser.java:65) 
    at com.google.gson.JsonParser.parse(JsonParser.java:45) 
    at com.rallydev.rest.response.Response.(Response.java:25) 
    at com.rallydev.rest.response.QueryResponse.(QueryResponse.java:16) 
    at com.rallydev.rest.RallyRestApi.query(RallyRestApi.java:179) 
    at QueryExample.main(QueryExample.java:36) 
Caused by: com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 21 
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1298) 
    at com.google.gson.stream.JsonReader.peek(JsonReader.java:390) 
    at com.google.gson.JsonParser.parse(JsonParser.java:60) 
    ... 5 more 

的源代碼如下:

import com.google.gson.JsonElement; 
import com.google.gson.JsonObject; 
import com.rallydev.rest.RallyRestApi; 
import com.rallydev.rest.request.QueryRequest; 
import com.rallydev.rest.response.QueryResponse; 
import com.rallydev.rest.util.Fetch; 
import com.rallydev.rest.util.QueryFilter; 
import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 



public class QueryExample { 

    public static void main(String[] args) throws URISyntaxException, IOException { 

     //Create and configure a new instance of RallyRestApi 
     RallyRestApi restApi = new RallyRestApi(new URI("https://rally1.rallydev.com/#/4608446320ud"), "[email protected]", "password"); 
     restApi.setApplicationName("QueryExample"); 

     try { 

      System.out.println("Querying for top 5 highest priority unfixed defects..."); 

      QueryRequest defects = new QueryRequest("defect"); 

      defects.setFetch(new Fetch("FormattedID", "Name", "State", "Priority")); 
      defects.setQueryFilter(new QueryFilter("State", "<", "Fixed")); 
      defects.setOrder("Priority ASC,FormattedID ASC"); 

      //Return up to 5, 1 per page 
      defects.setPageSize(1); 
      defects.setLimit(5); 

      QueryResponse queryResponse = restApi.query(defects); 
      if (queryResponse.wasSuccessful()) { 
       System.out.println(String.format("\nTotal results: %d", queryResponse.getTotalResultCount())); 
       System.out.println("Top 5:"); 
       for (JsonElement result : queryResponse.getResults()) { 
        JsonObject defect = result.getAsJsonObject(); 
        System.out.println(String.format("\t%s - %s: Priority=%s, State=%s", 
        defect.get("FormattedID").getAsString(), 
        defect.get("Name").getAsString(), 
        defect.get("Priority").getAsString(), 
        defect.get("State").getAsString())); 
       } 
      } else { 
       System.err.println("The following errors occurred: "); 
       for (String err : queryResponse.getErrors()) { 
        System.err.println("\t" + err); 
       } 
      } 

     } finally { 
      //Release resources 
      restApi.close(); 
     } 
    } 
}   

上什麼導致任何幫助,這是非常感謝!

+0

畢竟你需要發佈你的JSON:異常告訴我們:第1行第21列的期望EOF – DigCamara 2013-05-09 20:56:34

回答

0

看你的代碼,我認爲你網址:

URI("https://rally1.rallydev.com/#/4608446320ud")

的問題,它需要只是:

URI("https://rally1.rallydev.com")

拉力REST的URL的形式爲:

https://rally1.rallydev.com/slm/webservice/1.43/defect/12345678910.js

所以當Java REST庫正試圖制定針對從您的代碼生成的URL查詢時,它最終會這樣看:

https://rally1.rallydev.com/#/4608446320ud/slm/webservice/1.43/defect/12345678910.js

如果你把它插入到一個瀏覽器,你會得到一個拉力賽404,它含有大量的HTML和格式,而不是JSON的。 「#/ 4608446320ud」字符串僅用於RallyUI,並在應用程序中提供項目範圍信息。該UI上下文解釋了爲什麼你會得到一個格式化的HTML 404響應,Java工具包不知道如何處理。

相關問題