এইচটিটিপি পোস্ট, জিইটি ইত্যাদি ব্যবহারের জন্য জাভা গ্রন্থাগারটি কোনটি? [বন্ধ]


101

পারফরম্যান্স, স্থিতিশীলতা, পরিপক্কতা ইত্যাদির ক্ষেত্রে HTTP পোষ্ট, জিইটি ইত্যাদি ব্যবহারের জন্য জাভা গ্রন্থাগার কোনটি? এমন কি একটি নির্দিষ্ট গ্রন্থাগার রয়েছে যা অন্যের চেয়ে বেশি ব্যবহৃত হয়?

আমার প্রয়োজনীয়তাগুলি দূরবর্তী সার্ভারে HTTPS পোস্ট অনুরোধ জমা দিচ্ছে। আমি java.net। * প্যাকেজ অতীতে ব্যবহার করেছি পাশাপাশি org.apache.commons.httpclient। * প্যাকেজ। দু'জনেই কাজটি সম্পন্ন হয়েছে তবে আমি আপনার কিছু মতামত / সুপারিশ চাই।

উত্তর:


110

imho: অ্যাপাচি এইচটিটিপি ক্লায়েন্ট

ব্যবহারের উদাহরণ:

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.*;

public class HttpClientTutorial {

  private static String url = "http://www.apache.org/";

  public static void main(String[] args) {
    // Create an instance of HttpClient.
    HttpClient client = new HttpClient();

    // Create a method instance.
    GetMethod method = new GetMethod(url);

    // Provide custom retry handler is necessary
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
            new DefaultHttpMethodRetryHandler(3, false));

    try {
      // Execute the method.
      int statusCode = client.executeMethod(method);

      if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + method.getStatusLine());
      }

      // Read the response body.
      byte[] responseBody = method.getResponseBody();

      // Deal with the response.
      // Use caution: ensure correct character encoding and is not binary data
      System.out.println(new String(responseBody));

    } catch (HttpException e) {
      System.err.println("Fatal protocol violation: " + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("Fatal transport error: " + e.getMessage());
      e.printStackTrace();
    } finally {
      // Release the connection.
      method.releaseConnection();
    }  
  }
}

কিছু হাইলাইট বৈশিষ্ট্য:

  • মানক ভিত্তিক, খাঁটি জাভা, এইচটিটিপি সংস্করণ 1.0 এবং 1.1 প্রয়োগ করা
    • একটি এক্সটেনসিবল ও ও ফ্রেমওয়ার্কে সমস্ত HTTP পদ্ধতি (GET, POST, PUT, DELETE, HEAD, OptionS, এবং TRACE) এর সম্পূর্ণ প্রয়োগ।
    • এইচটিটিপিএস (এসএসএল ওভার এসএসএল) প্রোটোকল সহ এনক্রিপশন সমর্থন করে।
    • দানাদার অ-মানক কনফিগারেশন এবং ট্র্যাকিং।
    • এইচটিটিপি প্রক্সির মাধ্যমে স্বচ্ছ সংযোগ।
    • সংযুক্ত পদ্ধতি দ্বারা HTTP প্রক্সিগুলির মাধ্যমে টানেল এইচটিটিপিএস সংযোগগুলি।
    • নেটিভ জাভা সকেট সমর্থন ব্যবহার করে SOCKS প্রক্সি (সংস্করণ 4 এবং 5) এর মাধ্যমে স্বচ্ছ সংযোগগুলি।
    • বেসিক, ডাইজেস্ট এবং এনক্রিপ্টিং এনটিএলএম (এনটি ল্যান ম্যানেজার) পদ্ধতিগুলি ব্যবহার করে প্রমাণীকরণ।
    • কাস্টম প্রমাণীকরণ পদ্ধতিগুলির জন্য প্লাগ-ইন মেকানিজম।
    • বড় ফাইল আপলোড করার জন্য মাল্টি পার্ট ফর্ম পোষ্ট।
    • প্লাগেবল নিরাপদ সকেট বাস্তবায়ন, তৃতীয় পক্ষের সমাধানগুলি আরও সহজ করে তোলে
    • মাল্টি-থ্রেড অ্যাপ্লিকেশনগুলিতে ব্যবহারের জন্য সংযোগ পরিচালনার সহায়তা। সর্বাধিক মোট সংযোগ স্থাপনের পাশাপাশি হোস্ট প্রতি সর্বোচ্চ সংযোগ স্থাপন সমর্থন করে Supp বাসি সংযোগগুলি সনাক্ত করে এবং বন্ধ করে।
    • সেট-কুকি পড়ার জন্য স্বয়ংক্রিয় কুকি হ্যান্ডলিং: সার্ভার থেকে শিরোনাম এবং যখন উপযুক্ত হয় তখন তাদের কোনও কুকিতে ফেরত পাঠানো।
    • কাস্টম কুকি নীতিগুলির জন্য প্লাগ-ইন মেকানিজম।
    • সার্ভারে সরাসরি সকেটে স্ট্রিমিং করে কোনও সামগ্রী বডি বাফারিং এড়াতে আউটপুট স্ট্রিমগুলির অনুরোধ করুন।
    • সাকেট থেকে সরাসরি সার্ভারে স্ট্রিমিং করে প্রতিক্রিয়া বডি দক্ষতার সাথে পড়তে প্রতিক্রিয়া ইনপুট স্ট্রিমগুলি।
    • HTTP / 1.0 এ কিপএলাইভ এবং HTTP / 1.1 তে স্থায়িত্ব ব্যবহার করে অবিচ্ছিন্ন সংযোগগুলি
    • সার্ভার দ্বারা প্রেরিত প্রতিক্রিয়া কোড এবং শিরোনামে সরাসরি অ্যাক্সেস।
    • সংযোগের সময়সীমা নির্ধারণ করার ক্ষমতা।
    • সমান্তরাল অনুরোধ এবং সংযোগগুলির দক্ষ পুনরায় ব্যবহারের জন্য অনুমতি দেওয়ার জন্য এইচটিপিএমথোদগুলি কমান্ড প্যাটার্ন প্রয়োগ করে।
    • উত্স কোড অ্যাপাচি সফ্টওয়্যার লাইসেন্সের অধীনে অবাধে উপলব্ধ।

7
+1 দুর্দান্ত উত্তর: দুর্দান্ত উদাহরণ। দুর্দান্ত পয়েন্ট। আপনি সত্যিই অ্যাপাচি এইচটিটিপি ক্লায়েন্ট বিক্রয় করেন।
থ্রোবায়ুয়ান

24
ডকুমেন্টেশন যদিও তারিখের বাইরে। এইচটিটিপিপ্লিয়েন্ট আর একটি কংক্রিট শ্রেণি নয়, এটি একটি ইন্টারফেস, সুতরাং উপরের কোডটি এই HTTPClient ইন্টারফেসটি ইনস্ট্যান্ট করার চেষ্টা করার কারণে কাজ করবে না। পরিবর্তে আপনাকে এমন একটি ক্লাস ইনস্ট্যান্ট করতে হবে যা HTTPClient ইন্টারফেস প্রয়োগ করে, উদাহরণস্বরূপ DefaultHttpClient।
therobyouknow

4
প্রতিটি রিলিজ অনেক বড় পরিবর্তন বলে মনে হচ্ছে ... কয়েক বছর ধরে এই লাইব্রেরিটির সাথে সত্যিই হতাশ হয়ে পড়েছে .... এবং এখন তারা পুল থেকে সংযোগগুলি ফাঁস করবে বলে মনে হচ্ছে যা আমার সর্বোচ্চ 20 টি সেট আপ হয়েছে .... grrrrrr ।
ডিন হিলার

4
অ্যাপাচি এইচটিটিপি ক্লায়েন্টটি এখন ইওএল বলে মনে হচ্ছে, একটি নতুন অ্যাপাচি লাইব্রেরি উপলব্ধ।
অ্যান্ড্রু আইলেট

18
প্রিয় ডাউন-ভোটারগণ, এই উত্তরটি প্রায় 5 বছর আগে তৈরি হয়েছিল ...
ক্রিস

24

আমি অ্যাপাচি এইচটিপিপি কম্পোনেন্টস এইচটিটিপি ক্লিনেন্টকে সুপারিশ করব , কমন্স এইচটিটিপি ক্লিনেন্টের উত্তরসূরি

আমি এইচটিএমএল ইউনাইটে একবার দেখার পরামর্শ দিই। এইচটিএমএলইনিট হ'ল "জাভা প্রোগ্রামগুলির জন্য জিইউআই-কম ব্রাউজার"। http://htmlunit.sourceforge.net/


16

আমি জার্সির কাছে কিছুটা আংশিক । আমরা আমাদের সমস্ত প্রকল্পে 1.10 ব্যবহার করি এবং এটি দিয়ে আমরা সমাধান করতে পারিনি এমন কোনও সমস্যার মুখোমুখি হইনি।

আমি এটি পছন্দ করার কয়েকটি কারণ:

  • সরবরাহকারীরা - জার্সিতে সাবান 1.1 / 1.2 সরবরাহকারী তৈরি করেছে এবং আমাদের জ্যাক্স-ডাব্লুএস কলগুলির জন্য বিশাল অ্যাকসিস ব্যবহারের প্রয়োজনীয়তাটি দূর করেছে
  • ফিল্টারগুলি - সংবেদনশীল তথ্যের লগিং রোধ করার সময় পুরো অনুরোধটি (অনুরোধ / প্রতিক্রিয়া শিরোনাম সহ) লগ করার জন্য ডাটাবেস লগিং ফিল্টার তৈরি করে।
  • জ্যাকএক্সবি - অনুরোধ / প্রতিক্রিয়া থেকে সরাসরি অবজেক্টগুলিতে / থেকে মার্শালিং সমর্থন করে
  • এপিআই ব্যবহার করা সহজ

সত্য কথা বলতে গেলে, HTTPClient এবং জার্সি বাস্তবায়ন এবং এপিআইতে খুব মিল। জার্সির জন্য একটি এক্সটেনশনও রয়েছে যা এটি HTTPClient সমর্থন করতে দেয়।

জার্সি ১.x সহ কয়েকটি কোডের নমুনা: https://blogs.oracle.com/enterprisetechtips/entry/consuming_restful_web_services_with

http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/

জার্সি ক্লায়েন্টের সাথে এইচটিটিপি ক্লায়েন্ট: https://blogs.oracle.com/PavelBucek/entry/jersey_client_apache_http_client


11

আমি স্বীকার করি যে httpclient একটি মানদণ্ডের কিছু - তবে আমি অনুমান করি আপনি বিকল্পগুলি সন্ধান করছেন তাই ...

রিসলেট একটি ওয়েব ক্লায়েন্টকে বিশ্রামযুক্ত ওয়েব পরিষেবাদির সাথে ইন্টারঅ্যাক্টের জন্য বিশেষভাবে ডিজাইন করেছে।

উদাহরণ কোড:

    Client client = new Client(Protocol.HTTP);
    Request r = new Request();
    r.setResourceRef("http://127.0.0.1:8182/sample");
    r.setMethod(Method.GET);
    r.getClientInfo().getAcceptedMediaTypes().add(new Preference<MediaType>(MediaType.TEXT_XML));
    client.handle(r).getEntity().write(System.out);

আরও তথ্যের জন্য http://www.restlet.org/ দেখুন


6

আমি নিং অ্যাসিঙ্ক এইচটিপিপি ক্লায়েন্ট লাইব্রেরির উল্লেখ করতে চাই । আমি এটি কখনই ব্যবহার করি নি তবে অ্যাপাচি এইচটিপিপি ক্লায়েন্টের তুলনায় আমার সহকর্মী এ সম্পর্কে সচেতন which আমি এটি জানতে আগ্রহী হয়েছি নেটটি , উচ্চ-পারফরম্যান্স অ্যাসিঙ্ক্রোনাস আই / ও ফ্রেমওয়ার্কের উপর ভিত্তি করে , যার সাথে আমি আরও পরিচিত এবং উচ্চ সম্মান অর্জন করি।


6

আমি আপনাকে কর্ন-httpclient সুপারিশ করতে পারি । এটি সহজ, দ্রুত এবং বেশিরভাগ ক্ষেত্রে যথেষ্ট।

HttpForm form = new HttpForm(new URI("http://localhost:8080/test/formtest.jsp"));
//Authentication form.setCredentials("user1", "password");
form.putFieldValue("input1", "your value");
HttpResponse response = form.doPost();
assertFalse(response.hasError());
assertNotNull(response.getData());
assertTrue(response.getData().contains("received " + val));

মাভেন নির্ভরতা

<dependency>
    <groupId>net.sf.corn</groupId>
    <artifactId>corn-httpclient</artifactId>
    <version>1.0.0</version>
</dependency>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.