2016-06-08 5 views
1

서버에서 응답을 받고 Gson을 사용하여 해당 객체에 역 직렬화합니다.서버에서 오류 응답을 역 직렬화 할 때 NPE

문제는 때로는 오류 응답 (내가 예상 한 개체 유형이 아닌)이 나오고 NullPointerException이 발생한다는 것입니다. 어떻게 이런 경우를 처리 할 수 ​​있습니까?

내 코드는 다음과 같습니다

 Response pollsResponse = okHttpClient.newCall(pollsRequest).execute(); 

     String pollsResponseString = pollsResponse.body().string(); 

     // Gson Type for List of Poll.class oObjects 
     Type listType = new TypeToken<ArrayList<Poll>>() { }.getType(); 
     pollsList = gson.fromJson(pollsResponseString, listType); 

오류 코드의 마지막 줄을있다 NPE을 제공합니다. 항목이 ArrayList<Poll>이 아닌지 확인하려면 어떻게해야합니까? 그래서이를 역 직렬화하지 않을까요?

편집 : 내 질문이 연결된 것과 비슷한 이유를 이해할 수 없습니까? 나는 NPE가 무엇인지 압니다. 나는 NPE로 이어질 네트워크 호출로부터 기대하지 않는 결과를 어떻게 처리 할 수 ​​있는지 모른다. 내가 틀렸다면 정정해라.

+1

[NullPointerException이란 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –

답변

1

본문을 구문 분석하기 전에 응답이 유효한지 확인해야합니다. 이런 식으로 뭔가 : BTW https://github.com/square/okhttp/wiki/Recipes

:

if (!pollsResponse.isSuccessful()) 
    throw new IOException("Unexpected reply " + pollsResponse); 

여기 레시피를 참조 질문과 문제는 제목이 "직렬화 복원 NPE가 ..."문제에 정말 관련없는 즉, 더 좋은 주제는 "어떻게하면 OKHttp 응답 오류를 찾을 수 있습니까?"

+0

네가 맞습니다. 나는 그것이 java와 관련이 있다고 생각했다. 죄송합니다, 나쁜, 답변 주셔서 고마워요. – Mes

+1

@ 메스 - 문제 없습니다. 서버가 언젠가 JSON을 보내지 않기로 결정한 경우 (예 : 집으로 이동하거나 해킹 당하거나 이와 유사한 경우 이 사건에 대해 걱정할 필요가 없다고 확신하지만, 통제하지 못하는 무언가가 당신에게 어떤 것도 보낼 수 있다는 것을 절대 잊지 마십시오! – Matthew

+0

그건 사실이지만, 지금은 내 걱정거리 중 가장 적은 것입니다 : P – Mes