2011-02-17 7 views
4

URL에서 JSON 데이터가 포함 된 파일을 다운로드 할 수 있습니까? 또한, 내가 필요로하는 파일은 파일 확장자가 없거나 문제가 있거나 다운로드 할 때 .txt 확장자를 갖도록 강제 할 수 있습니까?Android - URL에서 JSON 파일 다운로드

업데이트 : 내가 아는 사이트에 액세스하려면 웹 사이트에 입력 한 사용자 이름과 비밀번호가 필요합니다. 파일을 검색 할 때이 값을 입력하는 방법이 있습니까?

+1

안녕하세요, [이] (http://stackoverflow.com/questions/576513/android-download-binary-file-problems)를 사용해보세요. – Pasha

답변

1

기본적으로 당신이 뭔가를 할 것이다 :

코드 :

URL address = URL.parse("http://yoururlhere.com/yourfile.txt"); 
URLConnection conn = new URLConnection(address); 
InputStream is = conn.getInputStream(); 
BufferedInputStream bis = new BufferedInputStream(is); 
ByteArrayBuffer bab = new ByteArrayBuffer(64); 
int current = 0; 

while((current = bis.read()) != -1) { 
    bab.append((byte)current); 
} 

FileOutputStream fos = new FileOutputStream(new File(filepath)); 
fos.write(bab.toByteArray()); 
fos.close(); 
+0

URLConnection을 인스턴스화 할 수 없으므로 실패합니다. – FractalBob

3

당신이 URLConnection의를 사용하여 시도 적이 있습니까?

private InputStream getStream(String url) { 
    try { 
     URL url = new URL(url); 
     URLConnection urlConnection = url.openConnection(); 
     urlConnection.setConnectTimeout(1000); 
     return urlConnection.getInputStream(); 
    } catch (Exception ex) { 
     return null; 
    } 
} 

또한이처럼 PARAMS를 인코딩 기억

String action="blabla"; 
InputStream myStream=getStream("http://www.myweb.com/action.php?action="+URLEncoder.encode(action)); 
+1

입력 스트림을 닫는 것을 잊지 마세요 :) –

1

확인합니다. 다른 사람들이 지적한 것처럼 기본 URL은 시작점으로도 충분합니다.

다른 코드 예제가 작동하는 동안 JSON 컨텐츠의 실제 액세스는 한 줄 일 수 있습니다. Jackson JSON 라이브러리를 사용하면 할 수있는 :

Response resp = new ObjectMapper().readValue(new URL("http://dot.com/api/?customerId=1234").openStream(),Response.class); 

당신이 정의한 '응답'으로 JSON 데이터를 결합하기를 원한다면 :지도를 얻기 위해 대신 할 것 :

Map<String,Object> map = new ObjectMapper().readValue(new URL("http://dot.com/api/?customerId=1234").openStream(), Map.class); 

로 사용자 정보를 추가하는 것; 이들은 일반적으로 Basic Auth을 사용하여 전달되며 base64로 인코딩 된 사용자 정보를 "Authorization"헤더로 전달합니다. URL에서 HttpURLConnection을 열고 헤더를 추가해야합니다. JSON 액세스 부분은 여전히 ​​동일합니다.

0

Here은 클래스 파일이며 URL에서 JSON 데이터를 다운로드하기 위해 작성한 인터페이스입니다. 사용자 이름 비밀번호 인증의 경우 액세스하는 웹 사이트에서 구현 방법에 따라 다릅니다.

관련 문제