, 또는 iOS에서 나는 양식을 그냥 작동Android의 URL에서 http 인증 정보를 어떻게 사용할 수 있습니까? 브라우저에서
http://myUser:[email protected]/secure/area/index.html
에서 인코딩 된 HTTP 인증 정보가있는 URL의 내용을 얻을 때. 웹 서비스에서 URL을 가져오고 있습니다. 도움이 될만한 경우 HTTP 인증 정보를 파싱하려고하지 않는 것이 좋습니다. 실제로 URL을 구문 분석하지 않고도 Android에서 비슷한 작업을 수행 할 수 있습니까? 또는 그것에 대해 가장 좋은 방법은 무엇입니까?
업데이트 : 인증 헤더에 인증 정보를 설정하려고하면 매우 이상한 FileNotFoundException이 발생합니다. 여기
내가 사용하고 코드의 : 모든 정보를 체크 아웃 것으로 보인다 URL url = new URL(urlString);
URLConnection connection;
String authority = url.getAuthority();
if (authority.contains("@")) {
String userPasswordString = authority.split("@")[0];
url = new URL(urlString.replace(userPasswordString + "@", ""));
connection = url.openConnection();
String encoded = new String(Base64.encode(userPasswordString.getBytes(), Base64.DEFAULT), "UTF-8");
connection.setRequestProperty("Authorization", "Basic " + encoded);
} else {
connection = url.openConnection();
}
InputStream responseStream = connection.getInputStream();
, 나는 URL이 정확한지 확인한, base64로 문자열이 올바른지, 파일 서버에 확실히 - 파이어 폭스에서 열어도 전혀 문제가 없습니다. 파이어 버그는 제가 말할 수있는 한 내가 보낸 것과 일치하는 모든 적절한 헤더를 보여줍니다. 내가 생각 얻을 것은 다음과 같은 오류 (URL 호스트가 무죄를 보호하기 위해 변경)입니다 :
java.io.FileNotFoundException: http://a1b.example.com/grid/uploads/profile/avatar/user1/custom-avatar.jpg
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1061)
어떤 생각이 무엇인지,이 모든에 대해 무엇입니까?
HttpClient를 사용하여 보았지만 Issue 16041에서 URLConnection을 사용하는 것이 좋습니다.
업데이트 된 질문 –