Webharvest를 사용하여 웹 사이트에서 파일을 다운로드하고 원래 이름을 사용합니다. 내가 함께 일하고Java에서 인코딩 헤더 문제 받기
자바 코드는 다음과 같습니다
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.methods.GetMethod;
HttpClient client = new HttpClient();
BufferedReader br = null;
StringBuffer result = new StringBuffer();
String attachName;
GetMethod method = new GetMethod(attachmentLink.toString());
int returnCode;
returnCode = client.executeMethod(method);
Header[] headers = method.getResponseHeader("Content-Disposition");
attachName = headers[0].getValue();
attachName = new String(attachName.getBytes());
webharvest의 결과는 다음과 같습니다
첨부; 파일 이름 = "Resolucin sobre 암석 드 Contratacin.pdf"
내가 헤더 내용의 값을 가지고 후에는 편지
ó
을 만들어 질수 변수 attachName에 -Disposition, 나는 또한 그것을 해독하려고하지만 운 :
String attachNamef = URLEncoder.encode(attachName, "ISO-8859-1");
attachNamef = URLEncoder.decode(attachNamef, "UTF-8");
나는 DETE 할 수 있었다 응답 문자셋은 다음과 같습니다. ISO-8859-1
method.getResponseCharSet()
P.S. 파이어 폭스 파이어 버그에서 헤더를 볼 때 값은 정상입니다. 내용 - 처리
첨부 파일; 파일 이름 = "Resolución sobre Mesas de Contratación.pdf"
응답 문자 집합은 헤더 필드가 아니라 페이로드를 참조합니다. 또한 HTTP 구성 요소의 매우 오래된 버전을 사용하고있는 것 같습니다. 마지막으로 서버 응답이 유효하지 않습니다. 비 ASCII 문자는 여기에 허용되지 않습니다. RFC 6266을 참조하십시오. –