2016-12-20 81 views
2

我得到一個錯誤,而試圖執行下面的代碼:不能老是解決「內容長度和流長度不同意」錯誤

fun parseErrorCodes(response: Response<*>): List<String> { 
     val errorCodes: MutableList<String> = ArrayList() 
     try { 
      val listType = object : TypeToken<ArrayList<ApiError>>() { 
      }.type 
      val errorJson = JsonParser().parse(response.errorBody().string()).asJsonObject.get("response") 
      if (errorJson.isJsonArray) { 
       val errors = Gson().fromJson<List<ApiError>>(errorJson, listType) 
       for (apiError in errors) { 
        errorCodes.add(apiError.errorCode) 
       } 
       return errorCodes 
      } else { 
       errorCodes.add(Gson().fromJson(errorJson, ApiError::class.java).errorCode) 
       return errorCodes 
      } 
     } catch (e: Exception) { 
      e.printStackTrace() 
     } 
     return errorCodes 
    } 

在該行出現的錯誤:val errorJson = JsonParser().parse(response.errorBody().string()).asJsonObject.get("response")

有人可以幫我解決這個錯誤嗎?

回答

3

我找到了我的問題的答案。問題在於我試圖解析API的響應兩次,第一次顯示錯誤消息,然後獲取錯誤代碼來處理它們以備將來驗證。

這是我的代碼的外觀:

ErrorHandler.showError(activity, response) 
val errorCodes = ErrorHandler.parseErrorCodes(response) 
handleErrorCodes(errorCodes) 

所以,這兩種方法showError和parseErrorCodes用API響應工作。