JAVA 도움말 OkHttp Java: 간소화된 HTTP 요청 커티스 차우 업데이트됨:7월 28, 2025 다운로드 IronPDF 메이븐 다운로드 JAR 다운로드 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 In modern Java development, efficient handling of HTTP requests is crucial for building robust applications, especially those that rely on web services and APIs. OkHttp, a powerful HTTP & HTTP/2 client for Java and Kotlin, has become a popular choice due to its performance, ease of use, and advanced features. This article provides a comprehensive guide to OkHttp, covering its key features, installation, and common use cases. What is OkHttp? OkHttp is a versatile open-source Java library for handling HTTP requests, offering a comprehensive set of features for seamless integration into your applications. With its intuitive API, creating a new request or executing a simple POST request is as easy as configuring a new request builder with query parameters and a string URL. Additionally, OkHttp facilitates efficient response handling, providing access to the response body, response headers, and even supporting response caching to optimize network traffic and reduce server availability problems. Whether you're making synchronous or asynchronous calls, OkHttp's connection pooling ensures optimal performance, even when dealing with multiple IP addresses. For developers accustomed to using Apache HTTP Client, OkHttp offers a more modern and efficient alternative, with improved performance and flexibility. Its support for asynchronous calls and callbacks makes it a preferred choice for applications requiring responsiveness and scalability. With OkHttp, managing many HTTP clients and requests becomes effortless, empowering developers to focus on building robust and reliable applications without compromising on performance or functionality. Key Features Key features of OkHttp include: Synchronous and asynchronous request handling: OkHttp allows for both synchronous (blocking) and asynchronous (non-blocking) operations. Connection pooling: Reuses HTTP connections to minimize client connectivity problems and improve performance. Transparent GZIP compression: Reduces the size of HTTP responses, saving bandwidth and speeding up data transfer. Caching: Supports response caching, reducing the need for repeated network requests. HTTP/2 support: Enhances performance by allowing multiple requests and responses to be multiplexed over a single connection. Timeouts and retries: Offers fine-grained control over connection and read timeouts, as well as retry mechanisms for failed requests. Installing OkHttp To start using OkHttp in your Java project, you need to include its dependency in your build configuration. If you're using Maven, add the following dependency to your pom.xml file: <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>5.0.0-alpha.14</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>5.0.0-alpha.14</version> </dependency> XML For Gradle, add this line to your build.gradle file: implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.14' Make sure to check for the latest version on Maven Central or GitHub. Basic Usage Creating an OkHttpClient The OkHttpClient class is the main entry point for executing HTTP requests. It is recommended to create a single OkHttpClient instance and reuse it throughout your application to take advantage of connection pooling. import okhttp3.OkHttpClient; OkHttpClient client = new OkHttpClient(); import okhttp3.OkHttpClient; OkHttpClient client = new OkHttpClient(); JAVA Making GET Requests To make a simple GET request, you need to create a Request object and execute it using the OkHttpClient. import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } JAVA Making POST Requests For a POST request, you need to include a request body and return response. OkHttp provides the RequestBody class to handle this. import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { // Define the JSON media type public static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); // JSON data to be sent String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}"; // Create request body with JSON data RequestBody body = RequestBody.create(json, JSON); // Build the POST request Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts") .post(body) .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { // Define the JSON media type public static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); // JSON data to be sent String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}"; // Create request body with JSON data RequestBody body = RequestBody.create(json, JSON); // Build the POST request Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts") .post(body) .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } JAVA Asynchronous Requests Asynchronous requests are handled using callbacks, allowing your application to remain responsive while waiting for the response. import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Enqueue the request to be executed asynchronously client.newCall(request).enqueue(new Callback() { // Handle failure of the request @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); // Handle exceptions } // Handle successful response @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } }); } } import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Enqueue the request to be executed asynchronously client.newCall(request).enqueue(new Callback() { // Handle failure of the request @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); // Handle exceptions } // Handle successful response @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } }); } } JAVA Advanced Features Interceptors Interceptors are a powerful feature that allows you to inspect, modify, or retry requests and responses. They can be used for logging, adding headers, or handling authentication. import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { // Add an interceptor for modifying requests OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { // Modify the request to add the authorization header Request request = chain.request().newBuilder() .addHeader("Authorization", "Bearer your_token_here") .build(); return chain.proceed(request); } }) .build(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { // Add an interceptor for modifying requests OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { // Modify the request to add the authorization header Request request = chain.request().newBuilder() .addHeader("Authorization", "Bearer your_token_here") .build(); return chain.proceed(request); } }) .build(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } JAVA Handling Timeouts OkHttp provides methods to set timeouts for different stages of the HTTP request itself. import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; import java.util.concurrent.TimeUnit; public class OkHttpExample { public static void main(String[] args) { // Configure timeouts for connections, writes, and reads OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; import java.util.concurrent.TimeUnit; public class OkHttpExample { public static void main(String[] args) { // Configure timeouts for connections, writes, and reads OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } JAVA Caching Responses OkHttp can cache responses to reduce request latency and improve performance. This requires setting up a cache directory and size. import okhttp3.Cache; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.File; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { // Define the cache directory and size File cacheDirectory = new File("cacheDirectory"); Cache cache = new Cache(cacheDirectory, 10 * 1024 * 1024); // 10 MB cache // Build OkHttpClient with caching capability OkHttpClient client = new OkHttpClient.Builder() .cache(cache) .build(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } import okhttp3.Cache; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.File; import java.io.IOException; public class OkHttpExample { public static void main(String[] args) { // Define the cache directory and size File cacheDirectory = new File("cacheDirectory"); Cache cache = new Cache(cacheDirectory, 10 * 1024 * 1024); // 10 MB cache // Build OkHttpClient with caching capability OkHttpClient client = new OkHttpClient.Builder() .cache(cache) .build(); // Create a request specifying the URL Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { // Check if the response was successful System.out.println(response.body().string()); // Print the response body } else { System.err.println("Request failed: " + response.code()); // Print error code } } catch (IOException e) { e.printStackTrace(); // Handle exceptions } } } JAVA Integrating OkHttp with IronPDF in Java Combining the capabilities of OkHttp and IronPDF allows Java developers to fetch data from the web and convert it into PDFs. OkHttp is a robust HTTP client for handling network requests, while IronPDF is a powerful library for generating PDFs from various sources. IronPDF - Overview IronPDF for Java is a comprehensive library designed to simplify PDF generation within Java applications. Leveraging its intuitive API, developers can effortlessly create, manipulate, and render PDF documents from various data sources, including HTML, images, and text. With support for advanced features like PDF encryption, digital signatures, and interactive form filling, IronPDF empowers developers to produce professional-grade PDFs tailored to their specific requirements. Its seamless integration and extensive documentation make it a go-to solution for Java developers seeking to enhance their applications with robust PDF generation capabilities. Setting Up Dependencies First, add the necessary dependencies to your pom.xml (for Maven) file or build.gradle (for Gradle) file. Maven <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf</artifactId> <version>2024.3.1</version> </dependency> <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf</artifactId> <version>2024.3.1</version> </dependency> XML Gradle implementation 'com.ironsoftware:ironpdf:2024.3.1' Integrating OkHttp and IronPDF Now, let's combine the two functionalities: fetching HTML content with OkHttp and generating a PDF with IronPDF. import com.ironsoftware.ironpdf.PdfDocument; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; import java.nio.file.Paths; public class OkHttpToPdf { private final OkHttpClient client = new OkHttpClient(); // Initialize the OkHttpClient // Method to fetch HTML content from a given URL public String fetchHtml(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); // Execute the request and return the response body as a string try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); return response.body().string(); } } // Method to generate a PDF from a URL public void generatePdfFromUrl(String url, String outputFilePath) { try { String htmlContent = fetchHtml(url); // Fetch the HTML content PdfDocument pdf = PdfDocument.renderHtmlAsPdf(htmlContent); // Render HTML as PDF pdf.saveAs(Paths.get(outputFilePath)); // Save the PDF to the specified path System.out.println("PDF generated successfully at " + outputFilePath); } catch (IOException e) { System.err.println("Failed to fetch HTML content: " + e.getMessage()); } catch (Exception e) { System.err.println("Failed to generate PDF: " + e.getMessage()); } } // Main method to demonstrate fetching HTML and generating a PDF public static void main(String[] args) { OkHttpToPdf converter = new OkHttpToPdf(); // Create an instance of OkHttpToPdf converter.generatePdfFromUrl("https://ironpdf.com/java", "website.pdf"); // Fetch HTML and generate PDF } } import com.ironsoftware.ironpdf.PdfDocument; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; import java.nio.file.Paths; public class OkHttpToPdf { private final OkHttpClient client = new OkHttpClient(); // Initialize the OkHttpClient // Method to fetch HTML content from a given URL public String fetchHtml(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); // Execute the request and return the response body as a string try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); return response.body().string(); } } // Method to generate a PDF from a URL public void generatePdfFromUrl(String url, String outputFilePath) { try { String htmlContent = fetchHtml(url); // Fetch the HTML content PdfDocument pdf = PdfDocument.renderHtmlAsPdf(htmlContent); // Render HTML as PDF pdf.saveAs(Paths.get(outputFilePath)); // Save the PDF to the specified path System.out.println("PDF generated successfully at " + outputFilePath); } catch (IOException e) { System.err.println("Failed to fetch HTML content: " + e.getMessage()); } catch (Exception e) { System.err.println("Failed to generate PDF: " + e.getMessage()); } } // Main method to demonstrate fetching HTML and generating a PDF public static void main(String[] args) { OkHttpToPdf converter = new OkHttpToPdf(); // Create an instance of OkHttpToPdf converter.generatePdfFromUrl("https://ironpdf.com/java", "website.pdf"); // Fetch HTML and generate PDF } } JAVA Code Explanation The above code demonstrates how to fetch HTML content from a URL and convert it into a PDF file using the OkHttp and IronPDF libraries in Java: Import Statements: The necessary libraries are imported, including IronPDF for PDF generation and OkHttp for HTTP requests. OkHttpClient Initialization: An instance of OkHttpClient is created. fetchHtml Method: This method fetches HTML content from a specified URL. A request is built with the provided URL. The request is executed and the response is obtained. If the response is not successful, an IOException is thrown. The response body is returned as a string. generatePdfFromUrl Method: This method generates a PDF from the HTML content of a specified URL and saves it to a given file path. The HTML content is fetched using the fetchHtml method. The HTML content is rendered as a PDF using IronPDF. The PDF is saved to the specified file path. Appropriate error handling is included for both HTML fetching and PDF generation. main Method: This is the entry point of the program. An instance of OkHttpToPdf is created. The generatePdfFromUrl method is called with a specific URL and output file path. Output The URL data is fetched using OkHttp client and then rendered using IronPDF efficiently to convert it to PDF as shown below: For more detailed information on IronPDF, please visit this IronPDF Documentation page. Please also check this IronPDF Code Examples and IronPDF API Reference page for further utilizing IronPDF. Conclusion OkHttp is a versatile and powerful HTTP client for Java and Android that simplifies the process of making network requests. With its support for synchronous and asynchronous operations, connection pooling, transparent GZIP compression, caching, and HTTP/2, the OkHttp client is well-suited for a wide range of use cases. By integrating OkHttp into your Java applications, you can enhance their performance, reliability, and efficiency. By integrating OkHttp with IronPDF, you can efficiently fetch HTML content from web sources and convert it into PDF documents. This approach is especially useful for applications that need to generate reports, save web pages, or convert web content into offline documents. Unlock the potential of PDF generation in your Java applications with IronPDF's free trial, enabling seamless integration of professional-grade PDF generation into your projects. Download now and elevate your PDF generation experience! 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 관련 기사 업데이트됨 10월 26, 2025 참조를 통한 Java 패스(개발자를 위한 작동 방식) Java 프로그래밍 언어에서 매개변수 전달은 항상 값으로 전달됩니다. 객체를 다룰 때 참조 변수는 값으로 전달됩니다 더 읽어보기 업데이트됨 10월 26, 2025 Java 스캐너(개발자를 위한 작동 방식) 이 문서에서는 Java Scanner 클래스의 작동 방식을 자세히 살펴보고 예제를 통해 그 사용법을 살펴봅니다 더 읽어보기 업데이트됨 8월 31, 2025 Java Printf(개발자를 위한 작동 방식) IronPDF와 Java의 printf 기능을 통합하면 정확한 텍스트 서식으로 PDF 출력을 향상시킬 수 있습니다 더 읽어보기 Apache Commons IO: Java I/O 유틸리티Java용 Gson: 객체를 JSON으로 ...
업데이트됨 10월 26, 2025 참조를 통한 Java 패스(개발자를 위한 작동 방식) Java 프로그래밍 언어에서 매개변수 전달은 항상 값으로 전달됩니다. 객체를 다룰 때 참조 변수는 값으로 전달됩니다 더 읽어보기
업데이트됨 10월 26, 2025 Java 스캐너(개발자를 위한 작동 방식) 이 문서에서는 Java Scanner 클래스의 작동 방식을 자세히 살펴보고 예제를 통해 그 사용법을 살펴봅니다 더 읽어보기
업데이트됨 8월 31, 2025 Java Printf(개발자를 위한 작동 방식) IronPDF와 Java의 printf 기능을 통합하면 정확한 텍스트 서식으로 PDF 출력을 향상시킬 수 있습니다 더 읽어보기