IDL/Programming

HttpRequest 클래스의 FILENAME 키워드 사용법

이상우_IDL 2025. 8. 25. 15:42
728x90

이번에 출시된 IDL 9.2에 관한 게시물을 얼마전에 올린 바 있습니다. 여기서 이미 언급되었듯이 HttpRequest 클래스에 FILENAME 키워드가 추가되었습니다. HttpRequest 클래스는 IDL 9.0 버전에서 처음 도입되었고, 기존에 비슷한 역할을 하던 IDLnetURL 클래스를 향후 대체할 목적으로 도입되었다고 볼 수 있습니다. HttpRequest 클래스 자체에 대해서는 IDL 9.0 출시 당시에 이미 관련 게시물을 올린 바 있습니다. 다만 오늘은 이번에 추가된 FILENAME 키워드에 촛점을 맞춰서 간략히 살펴보고자 합니다.

 

일단 IDL 9.2 기준으로 HttpRequest 클래스의 메서드들 중에서 Get, Post, Put, Patch 메서드들이 FILENAME 키워드를 지원합니다. 오늘은 HttpRequest 클래스의 Get 메서드에서 FILENAME 키워드를 사용하는 방법 및 예제를 살펴보겠습니다. 앞서 언급했던 관련 게시물에서 Get 메서드를 소개하면서 사용했던 예제를 그대로 가져와보면 다음과 같습니다.

 

result = HttpRequest.Get( $

  'https://services.swpc.noaa.gov/images/ace-mag-swepam-7-day.gif')

 

기존에는 이와 같이 GIF 파일을 수신하더라도 파일 자체가 아닌 바이너리 데이터로만 수신이 가능했습니다. 따라서 해당 게시물의 내용에서는 OPENW, WRITEU 등의 명령들을 추가로 사용하여 파일로 생성하는 방식으로 결국 "파일을 수신"하면 되는 것으로 소개한 바 있습니다. 하지만 IDL 9.2에서는 다음과 같이 Get 메서드에서 FILENAME 키워드를 함께 사용하면 바로 파일로 수신이 가능합니다.

 

result = HttpRequest.Get( $

  'https://services.swpc.noaa.gov/images/ace-mag-swepam-7-day.gif', $

 FILENAME='ace-mag-swepam-7-day.gif')

 

이와 같이 수신될 파일의 이름을 FILENAME 키워드에 부여하면 됩니다. 위와 같은 명령을 실행하면 대상 파일이 IDL의 현재 디렉토리로 바로 수신될 것입니다. 추가적인 작업은 필요없습니다. 그리고 다음과 같이 파일의 수신이 정상적으로 수행되었는가에 대한 여부를 확인할 수도 있습니다.

 

PRINT, result.response_code

        200

 

이와 같이 수신 결과에 대한 response_code 값을 출력하면 되는데, 이 값이 100보다 작으면 뭔가 문제가 있다는 의미입니다. 통상적으로는 위와 같이 200과 같은 값이면 정상적으로 수신되었다고 보면 됩니다. 실제로 제가 이러한 방식으로 수신해본 그림 파일의 모습은 다음과 같습니다.

 

 

다만 이 그림 파일의 경우 항상 최신 데이터로 갱신되기 때문에 여러분이 직접 수신을 해본다면 그 모습은 위의 그림과는 다를 것입니다. 그 외에도 Get 메서드와 FILENAME 키워드를 사용하는 또 다른 예제들도 살펴보면 다음과 같습니다.

 

fn = '20250817_001500_1024_HMIIF.jpg'

result = HttpRequest.Get( $

  'https://sdo.gsfc.nasa.gov/assets/img/browse/2025/08/17/'+fn, FILENAME=fn)

 

result = HttpRequest.Get( $

  'http://tdc-www.harvard.edu/catalogs/BSC5', FILENAME='BSC5')

 

이와 같이 HttpRequest 클래스의 Get 메서드에서 FILENAME 키워드를 사용하면 네트워크상에 존재하는 파일을 손쉽게 다운로드할 수 있다는 것을 참조해두시면 좋을 것 같습니다.

 

 

* 이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.

LIST