2017-10-27 4 views
0

문자열 인코딩에 문제가 있습니다. 우선, 컨텍스트를 설명해 드리겠습니다.WebView에서 게시 용 Base64 인코딩

WebView에서 게시물을 작성하고로드해야합니다. 이 요구 사항에 대해 webView.postUrl (String url, byte [] postData)을 사용해야합니다.

이 메소드를 EncodingUtils.getBytes ("stringToEncode", "base64")와 함께 사용하여 많은 예제를 보았습니다.

좋은 소식은 이것이 저에게 효과적이라는 것입니다. 나쁜 소식은이 클래스가 사용되지 것입니다 그리고 당신은 Gradle을 파일에 다음 코드를 추가해야합니다

android { 
    useLibrary 'org.apache.http.legacy' 
} 

나는이를 방지하고 그것이 있어야하는 방식을 사용하고 싶습니다.

필자가 아는 한이 권장되지 않는 클래스의 대체 코드는 android.util.Base64입니다.

내가 성공하지 않고 다음 코드를 시도 :

webView.postUrl("url", Base64.encode("paramsToEncode".getBytes(),Base64.DEFAULT)); 

webView.postUrl("url", Base64.encode("paramsToEncode".getBytes(StandardCharsets.UTF_8),Base64.DEFAULT)); 

EncodingUtils의 문서에 따르면

바이트 배열에 지정된 문자열로 변환합니다. charset이 이 아닌 경우 기본 시스템 문자 세트가 사용됩니다. 파라미터 : data - 인코딩 할 문자열 charset - 원하는 문자 인코딩 반환 값 : 결과 바이트 배열.

그리고 Base64 설명서 :

입력 바이트 : 데이터 플래그 int로 인코딩은 : 부호화 출력의 특정 기능을 제어한다. RFC 준수 출력에 DEFAULT 결과를 전달 2045 반환 []

그래서 내가 뭘 잘못 모른다 바이트. 당신이 이런 종류의 문제로 고생했다면 나는 몇 가지 의견을 고맙게 생각할 것입니다. :)

답변

0

귀하의 예제가 작동하지 않는 이유는 확실하지,하지만 아래의 코드는 나를 위해 작동하는 것 같군 :

webView.postUrl(url, urlParams.getBytes(Charset.forName("UTF-8"))); 
+0

내 질문에 대한 대답은 아니지만, 그것은 내 문제에 대한 답입니다! 감사. –