최신 Volley 라이브러리를 사용 중이며 API에서 응답없이 본문이없는 204 개를 반환 할 때 문제가 있습니다.Android Volley 라이브러리가 204 및 비어있는 본문 응답과 함께 작동하지 않습니다.
이// Some responses such as 204s do not have content. We must check.
if (httpResponse.getEntity() != null) {
responseContents = entityToBytes(httpResponse.getEntity());
} else {
// Add 0 byte response as a way of honestly representing a
// no-content request.
responseContents = new byte[0];
}
getEntity의 결과가 나에게 널 결코 있지만 비어 있습니다 : 예상대로 BasicNetwork.java에 다음 코드가 작동하지 않는 것 같습니다. 나는 API가 컬 (curl)과 우편 배달부 (postman)를 체크하여 아무것도 반환하지 않는다는 것을 확신했다. 다른 누구도 그런 문제가 있습니까?
는 지금은 그냥 변경했습니다 그 경우에 : 나는 근본 원인을 해결하지 알고,하지만 난 더 깊이 잠수하기 전에 분명 아무것도없는 아니에요 있는지 확인하려면if (statusCode != HttpStatus.SC_NO_CONTENT && httpResponse.getEntity() != null)
이 문제에.
감사합니다.
편집 : 죄송합니다. 실제 문제는 검색 할 본문이 없으므로 이상한 메서드 인 entityToBytes에서 시간 초과 예외가 발생했다는 것을 잊어 버렸습니다.
또한 실제 사용할 수없는 웹 서비스 API를 사용하고 있지 않습니다. 대신 나는 양봉장에있는 조롱당한 웹 서비스에 연결하고 있습니다.하지만 양봉장이 문제가 될 수는 없습니다.
는'entityToBytes'이가 늦게 죄송합니다 아무 내용도 – njzk2
가없는 경우 길이가 0 바이트 []를 반환 나타납니다,하지만 난 같은 문제를했고 진짜 문제는 HttpStack 내 구현했다. 'getEntity()'가 null 인 경우 Apache의 새로운 라이브러리를 사용하고 새 객체와 말한 객체 사이를 변환합니다. 빈 실체를 반환했습니다. 당신이 발행하는 것이 유사 할 수도 있습니다. – Ali
응답이'getEntity'가'null'을 반환하면 volley가 그대로 작동해야한다면'HttpStack' 구현의'performRequest' 메소드를보십시오. 나처럼 옛날 아파치 라이브러리와 새로운 아파치 라이브러리간에 변환을하거나 다른 처리를하고 있다면 빈 개체를 추가 할 수있다. – Ali