2017-01-19 1 views
3

retorfit2 POST 요청 응답에서 문자열을 제거하고 싶습니다.개장 요청에서 원하지 않는 문자열을 제거하십시오

이 내 응답이다 인해 일부 보안 이유로 내 서버가 자동으로 내가 JSON으로 변환에, 문자열

/*-secure-이의 beacuse */

를 추가로

/*-secure-{"response":{"response":{"response":{"token":"95a2c5a8","email":"[email protected]","name":"xxx"},"status":true,"code":0.0},"status":200},"status":200}*/ 

오류 :

+0

당신은 GsonConverter 전에 역할을하는 컨버터를 구현 할 수 있습니다 참조하십시오. 그것은 처음부터 끝까지 안전한 부분을 제거한 다음 유효한 JSON 나머지를 실제 Gson 변환기에 위임합니다. 제이크 와튼 (Jake Wharton)도 그의 말을 통해 유사한 접근 방식을 제시했습니다. https://youtu.be/t34AQlblSeE?t=27m28s – peitek

+0

@peitek Gson 사용자 지정 변환기가 작동하고 있습니다. –

+0

마지막으로 한 일을 게시 할 수 있습니까? – FrankR

답변

2

내 사용자 정의 GSON 컨버터 클래스

final class CustomGsonResponseBodyConverter<T> implements Converter<ResponseBody, T> { 
    private final Gson gson; 
    private final TypeAdapter<T> adapter; 
    private Pattern pattern = Pattern.compile("^\\/\\*-secure-\\W(.*)\\*\\/$"); 

    CustomGsonResponseBodyConverter(Gson gson, TypeAdapter<T> adapter) { 
     this.gson = gson; 
     this.adapter = adapter; 
    } 

    @Override 
    public T convert(ResponseBody value) throws IOException { 
     String response = value.string(); 
     System.out.println(response); 
     Matcher matcher = pattern.matcher(response); 

     JsonReader jsonReader = gson.newJsonReader(new StringReader(matcher.group(1))); 
     try { 
      return adapter.read(jsonReader); 
     } finally { 
      value.close(); 
     } 
    } 
} 
+0

답변을 게시 해 주셔서 감사합니다. – FrankR

+0

이 컨버터를 개조 할 때 설정하는 방법을 알려 주실 수 있습니까? –

1
Gson gson = new GsonBuilder() 
    .setLenient() 
    .build(); 
// ... 
.addConverterFactory(GsonConverterFactory.create(gson) 

this

+0

을 확인하십시오. 오류 메시지가 으로 변경되었습니다. java.io.EOFException : 2 행 318 행의 입력 끝 $ –

관련 문제