프로그래밍 방식으로 호출 URL 익스포트
프로그래밍 언어에서 URL 내보내기를 호출하여 스크립트 또는 웹 서비스에서 데이터를 동적으로 내보냅니다.
시작하기 전에
필요한 역할: 없음
이 태스크 정보
다음 절차에는 .Net 프레임워크 호출을 위해 C#에서 URL 내보내기를 호출하는 방법을 보여 주는 코드 샘플이 포함되어 있습니다.
프로시저
-
다음 임포트를 추가합니다.
using System.Net; using System.IO; -
다운로드 메서드를 호출합니다.
static void Main(string[] args) { // Call to DownloadFile method supplying the URL and location to save CSV file locally int read = DownloadFile("https://<instance>.service-now.com/incident_list.do?CSV&sysparm_query=priority=1&sysparm_orderby=assigned_to", "c:\\test\\incident.csv"); } -
다음과 같이 다운로드 메서드를 생성합니다.
public static int DownloadFile(String url, String localFilename) { // Function will return the number of bytes processed // to the caller. Initialize to 0 here. int bytesProcessed = 0; // Assign values to these objects here so that they can // be referenced in the finally block Stream remoteStream = null; Stream localStream = null; WebResponse response = null; // Use a try/catch/finally block as both the WebRequest and Stream // classes throw exceptions upon error try { // Create a request for the specified remote file name WebRequest request = WebRequest.Create(url); // Create the credentials required for Basic Authentication System.Net.ICredentials cred = new System.Net.NetworkCredential("user_name", "password"); // Add the credentials to the request request.Credentials = cred; if (request != null) { // Send the request to the server and retrieve the // WebResponse object response = request.GetResponse(); if (response != null) { // Once the WebResponse object has been retrieved, // get the stream object associated with the response's data remoteStream = response.GetResponseStream(); // Create the local file localStream = File.Create(localFilename); // Allocate a 1k buffer byte[] buffer = new byte[1024]; int bytesRead; // Simple do/while loop to read from stream until // no bytes are returned do { // Read data (up to 1k) from the stream bytesRead = remoteStream.Read(buffer, 0, buffer.Length); // Write the data to the local file localStream.Write(buffer, 0, bytesRead); // Increment total bytes processed bytesProcessed += bytesRead; } while (bytesRead > 0); } } } catch (Exception e) { Console.WriteLine(e.Message); } finally { // Close the response and streams objects here // to make sure they're closed even if an exception // is thrown at some point if (response != null) response.Close(); if (remoteStream != null) remoteStream.Close(); if (localStream != null) localStream.Close(); } // Return total bytes processed to caller. return bytesProcessed; }