ProgramingTip

URL을 사용하여 원격 서버에 파일이 있는지 확인

bestdevel 2020. 12. 11. 19:13
반응형

URL을 사용하여 원격 서버에 파일이 있는지 확인


이 질문에 이미 답변이 있습니다.

URL이있는 원격 서버 (HTTP에서 제공)에 파일이 있는지 Java에서 어떻게 확인할 수 있습니까? 파일을 다운로드하고 보관하지 않고 파일의 존재를 확인합니다.


import java.net.*;
import java.io.*;

public static boolean exists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      // note : you may also need
      //        HttpURLConnection.setInstanceFollowRedirects(false)
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }

URL에 대한 연결 ( HttpURLConnection 사용 )이 HTTP 상태 코드 200 과 함께 반환 되면 파일이 존재하는 것입니다.

편집 : 우리는 그것이 존재하는지 여부에 관심이 있기 때문에 전체 문서를 필요로합니다. 헤더 요청 확인 하기 위해 HTTP HEAD 요청 메소드사용하여 헤더를 요청 수 있습니다.

출처 : http://www.rgagnon.com/javadetails/java-0059.html


public static boolean exists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      // note : you may also need
      //        HttpURLConnection.setInstanceFollowRedirects(false)
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }  

URL 존재 여부 확인


http를 통해 제공되는 파일이 가정하면 URL에 HEAD 요청을 보내고 반환 된 http 응답 코드를 확인할 수 있습니다.


확인하십시오. 소스 URL : 서버에 URL이 있는지 확인

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     

    String customURL = "http://www.desicomments.com/dc3/08/273858/273858.jpg";

    MyTask task = new MyTask();
    task.execute(customURL);
}


private class MyTask extends AsyncTask<String, Void, Boolean> {

    @Override
    protected void onPreExecute() {

    }

    @Override
    protected Boolean doInBackground(String... params) {

         try {
                HttpURLConnection.setFollowRedirects(false);
                HttpURLConnection con =  (HttpURLConnection) new URL(params[0]).openConnection();
                con.setRequestMethod("HEAD");
                System.out.println(con.getResponseCode()); 
                return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
            }
            catch (Exception e) {   
                e.printStackTrace();    
                return false;
            }
    }

    @Override
    protected void onPostExecute(Boolean result) {
        boolean bResponse = result;
         if (bResponse==true)
            {
                Toast.makeText(MainActivity.this, "File exists!", Toast.LENGTH_SHORT).show();      
            }
            else
            {           
                Toast.makeText(MainActivity.this, "File does not exist!", Toast.LENGTH_SHORT).show();
            }                  
    }           
}
}

유일한 방법은 다운로드하는 것입니다. :). 일부에서는 일반적으로 동일한 URL에 대한 GET 요청이 포함 된 HEAD 요청을 발행하여 수 있습니다. 이렇게하면 실제 파일 콘텐츠가 아닌 리소스 메타 데이터 만 반환됩니다.

업데이트 :이 작업을 수행하는 방법에 대한 실제 기술 세부 사항은 org.life.java의 답변을 확인하십시오.


URLConnection을 만드십시오. 성공하면 존재합니다. 입력 스트림을 여는 데까지 가야 할 수도 내용을 읽을 필요가 없습니다. 스트림을 즉시 닫을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/4596447/check-if-file-exists-on-remote-server-using-its-url

반응형