জাভাতে কোনও URL এর জন্য এইচটিটিপি প্রতিক্রিয়া কোড কীভাবে পাবেন?


144

একটি বিশেষ URL এর প্রতিক্রিয়া কোড পেতে দয়া করে আমাকে পদক্ষেপগুলি বা কোডটি বলুন the



2
আমি সদৃশ বলব না, যেহেতু সে প্রতিক্রিয়া কোড চায়, তবে @ অজিৎ আপনার যেভাবেই তা পরীক্ষা করা উচিত। সামান্য পরীক্ষা যুক্ত করুন এবং আপনি যেতে ভাল।
slezica

2
বরং আপনার জন্য আপনার কাজটি করার জন্য অন্যান্য লোকদের দাবি করা। দয়া করে দেখান যে আপনি কমপক্ষে নিজের দ্বারা এই কাজটি সম্পাদন করার চেষ্টা করেছেন। আপনার বর্তমান কোড এবং আপনি কীভাবে এই কাজটি সম্পাদন করার চেষ্টা করেছেন তা প্রদর্শন করুন। আপনি যদি কেউ চান যে আপনার পক্ষে কোনও কাজ করার জন্য আপনার পক্ষ থেকে কোনও প্রচেষ্টা না করে আপনি কাউকে নিয়োগ দিতে পারেন এবং তাদের অর্থ প্রদান করতে পারেন।
প্যাট্রিক ডব্লিউ। ম্যাকমাহন 17

তিনি কী দাবি করলেন? যখন তিনি কী করবেন তার কোনও ধারণা নেই তখন তিনি চাকাগুলি ঘুরানোর পরিবর্তে সাহায্যের জন্য বলেছিলেন। তিনি সম্প্রদায়টি যেমনটি উদ্দেশ্য হিসাবে ব্যবহার করেছিলেন তেমনই করেছিলেন।
ড্যানি রেমিংটন - ওএমএস

উত্তর:


180

এইচটিপিআরএল সংযোগ :

URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

int code = connection.getResponseCode();

এটি কোনওভাবেই দৃ example় উদাহরণ নয়; আপনাকে হ্যান্ডেল করতে হবে IOExceptionএবং কী হবে না। তবে এটি আপনার শুরু করা উচিত।

আপনার যদি আরও দক্ষতার সাথে কিছু প্রয়োজন হয় তবে এইচটিটিপিপ্লায়েন্টটি দেখুন


2
আমার নির্দিষ্ট ক্ষেত্রে এবং আপনার পদ্ধতির সাথে আমি একটি আইওএক্সেপশন পেয়েছি ("প্রক্সি দিয়ে প্রমাণীকরণে ব্যর্থ হয়েছে") যা সাধারণত একটি HTTP ত্রুটি 407 হয় there getRespondeCode () পদ্ধতি দ্বারা? যাইহোক, আমি কীভাবে আমার ত্রুটিটি পরিচালনা করতে জানি এবং প্রতিটি ব্যতিক্রমকে কীভাবে আলাদা করা যায় তা আমি জানতে চাই (বা কমপক্ষে এই নির্দিষ্ট ব্যতিক্রমটি)। ধন্যবাদ।
grattmandu03

2
@ গ্রেটমান্ডু03 - আমি নিশ্চিত নই দেখে মনে হচ্ছে আপনি স্ট্যাকওভারফ্লো.com / জিজ্ঞাসা / 18900143/… (দুর্ভাগ্যক্রমে এর উত্তর নেই) into আপনি এইচটিটিপিপ্লায়েন্টের মতো একটি উচ্চ-স্তরের কাঠামো ব্যবহার করার চেষ্টা করতে পারেন, এটি সম্ভবত আপনি কীভাবে প্রতিক্রিয়াগুলি পরিচালনা করেন তার উপর আপনাকে আরও কিছুটা নিয়ন্ত্রণ দিতে পারে।
রব হুরস্কা

ঠিক আছে আপনার উত্তরের জন্য আপনাকে ধন্যবাদ। আমার কাজটি হ'ল এই প্রক্সিটির সাথে কাজ করার জন্য একটি পুরানো কোডটি মানিয়ে নেওয়া, এবং ক্লায়েন্ট আরও কম সংশোধন করলে আমার কাজ বুঝতে পারবে। তবে আমার ধারণা, এটি আমার কাছে (এখনই) আমি যা চাই তা করার একমাত্র উপায়। যাই হোক ধন্যবাদ.
grattmandu03

শেষ অবধি আপনাকে কি সংযোগ বিচ্ছিন্ন () কল করতে হবে?
অ্যান্ড্রু সোয়ান

এটি সম্ভবত নির্ভর করে, আমি কিছু গবেষণা করতাম। ডক্স বলে কলিং disconnect()পদ্ধতি অন্তর্নিহিত সকেট বন্ধ করে দিতে পারেন যদি ক্রমাগত সংযোগ অন্যথায় যে সময়ে নিষ্ক্রিয়। , যা গ্যারান্টি দেয় না। দস্তাবেজগুলি এও ইঙ্গিত করে যে সার্ভারের কাছে অন্যান্য অনুরোধগুলি অদূর ভবিষ্যতে অসম্ভব। কল করার disconnect()অর্থ এই নয় যে এই HttpURLConnectionঅনুরোধটি অন্য অনুরোধগুলির জন্য পুনরায় ব্যবহার করা যেতে পারে। আপনি যদি InputStreamডেটা পড়ার জন্য ব্যবহার করছেন তবে আপনার close()সেই finallyব্লকটি স্ট্রিম করা উচিত ।
রব হুড়স্কা

38
URL url = new URL("http://www.google.com/humans.txt");
HttpURLConnection http = (HttpURLConnection)url.openConnection();
int statusCode = http.getResponseCode();

11
আরও সংক্ষিপ্ত (তবে সম্পূর্ণ কার্যকরী) উদাহরণের জন্য +1। দুর্দান্ত উদাহরণ
ইউআরএলও

থ্রেডে "মেইন" জাভা ডটনে ব্যতিক্রম হচ্ছে on
গণেশ বিজয়কুমার

কেবল বিষয় ছাড়াই, আমি একটি সংযোগ উত্পন্ন করতে পারে এমন সমস্ত প্রতিক্রিয়া কোডগুলি জানার চেষ্টা করছি - কোনও ডক আছে?
স্কাইনেট

প্রাথমিক প্রমাণীকরণের সাথে ইউআরএলগুলির জন্য এটি কীভাবে পরীক্ষা করবেন
সতীশ কুমার


10

আপনি নিম্নলিখিত চেষ্টা করতে পারেন:

class ResponseCodeCheck 
{

    public static void main (String args[]) throws Exception
    {

        URL url = new URL("http://google.com");
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("GET");
        connection.connect();

        int code = connection.getResponseCode();
        System.out.println("Response code of the object is "+code);
        if (code==200)
        {
            System.out.println("OK");
        }
    }
}

থ্রেডে "মেইন" জাভা ডটনে ব্যতিক্রম হচ্ছে on সংযোগপূর্ব: সংযোগ প্রত্যাখ্যান: সংযুক্ত। আমি রেজোজনটি জানি না
গণেশ বিজয়কুমার

5
import java.io.IOException;
import java.net.URL;
import java.net.HttpURLConnection;

public class API{
    public static void main(String args[]) throws IOException
    {
        URL url = new URL("http://www.google.com");
        HttpURLConnection http = (HttpURLConnection)url.openConnection();
        int statusCode = http.getResponseCode();
        System.out.println(statusCode);
    }
}

4

এটি আমার পক্ষে কাজ করেছে:

            import org.apache.http.client.HttpClient;
            import org.apache.http.client.methods.HttpGet;  
            import org.apache.http.impl.client.DefaultHttpClient;
            import org.apache.http.HttpResponse;
            import java.io.BufferedReader;
            import java.io.InputStreamReader;



            public static void main(String[] args) throws Exception {   
                        HttpClient client = new DefaultHttpClient();
                        //args[0] ="http://hostname:port/xyz/zbc";
                        HttpGet request1 = new HttpGet(args[0]);
                        HttpResponse response1 = client.execute(request1);
                        int code = response1.getStatusLine().getStatusCode();

                         try(BufferedReader br = new BufferedReader(new InputStreamReader((response1.getEntity().getContent())));){
                            // Read in all of the post results into a String.
                            String output = "";
                            Boolean keepGoing = true;
                            while (keepGoing) {
                                String currentLine = br.readLine();          
                                if (currentLine == null) {
                                    keepGoing = false;
                                } else {
                                    output += currentLine;
                                }
                            }
                            System.out.println("Response-->"+output);   
                         }

                         catch(Exception e){
                              System.out.println("Exception"+e);  

                          }


                   }

পারফেক্ট। ইউআরএলে পুনর্নির্দেশ থাকলেও কাজ করে
ড্যানিয়েল

2

এটিই আমার পক্ষে কাজ করেছে:

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class UrlHelpers {

    public static int getHTTPResponseStatusCode(String u) throws IOException {

        URL url = new URL(u);
        HttpURLConnection http = (HttpURLConnection)url.openConnection();
        return http.getResponseCode();
    }
}

আশা করি এটি কাউকে সাহায্য করবে :)


2

এই কোডটির টুকরোটি চেষ্টা করুন যা 400 ত্রুটি বার্তাগুলি পরীক্ষা করছে

huc = (HttpURLConnection)(new URL(url).openConnection());

huc.setRequestMethod("HEAD");

huc.connect();

respCode = huc.getResponseCode();

if(respCode >= 400) {
    System.out.println(url+" is a broken link");
} else {
    System.out.println(url+" is a valid link");
}

1

স্ক্যানার দ্বারা ডেটা পাওয়ার জন্য কার্যকর উপায় (অসম পেলোড সহ)।

public static String getResponseFromHttpUrl(URL url) throws IOException {
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    try {
        InputStream in = urlConnection.getInputStream();

        Scanner scanner = new Scanner(in);
        scanner.useDelimiter("\\A");  // Put entire content to next token string, Converts utf8 to 16, Handles buffering for different width packets

        boolean hasInput = scanner.hasNext();
        if (hasInput) {
            return scanner.next();
        } else {
            return null;
        }
    } finally {
        urlConnection.disconnect();
    }
}

এটি প্রশ্নের কোনও উত্তর দেয় না।
pringi

1

এটি সম্পূর্ণ স্থিতিশীল পদ্ধতি, যা আইওএক্সেপশন ঘটলে আপনি অপেক্ষার সময় এবং ত্রুটি কোড সেট করতে মানিয়ে নিতে পারেন:

  public static int getResponseCode(String address) {
    return getResponseCode(address, 404);
  }

  public static int getResponseCode(String address, int defaultValue) {
    try {
      //Logger.getLogger(WebOperations.class.getName()).info("Fetching response code at " + address);
      URL url = new URL(address);
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();
      connection.setConnectTimeout(1000 * 5); //wait 5 seconds the most
      connection.setReadTimeout(1000 * 5);
      connection.setRequestProperty("User-Agent", "Your Robot Name");
      int responseCode = connection.getResponseCode();
      connection.disconnect();
      return responseCode;
    } catch (IOException ex) {
      Logger.getLogger(WebOperations.class.getName()).log(Level.INFO, "Exception at {0} {1}", new Object[]{address, ex.toString()});
      return defaultValue;
    }
  }

0
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestMethod("POST");

। । । । । । ।

System.out.println("Value" + connection.getResponseCode());
             System.out.println(connection.getResponseMessage());
             System.out.println("content"+connection.getContent());

বেসিক স্বীকৃতি সহ আমরা ইউআরএলগুলির জন্য কীভাবে পারি?
সতীশ কুমার

0

ওয়েবসাইট এবং অন্যান্য তথ্য থেকে প্রতিক্রিয়া কোড পেতে আপনি জাভা http / https url সংযোগটি ব্যবহার করতে পারেন পাশাপাশি একটি নমুনা কোড is

 try {

            url = new URL("https://www.google.com"); // create url object for the given string  
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            if(https_url.startsWith("https")){
                 connection = (HttpsURLConnection) url.openConnection();
            }

            ((HttpURLConnection) connection).setRequestMethod("HEAD");
            connection.setConnectTimeout(50000); //set the timeout
            connection.connect(); //connect
            String responseMessage = connection.getResponseMessage(); //here you get the response message
             responseCode = connection.getResponseCode(); //this is http response code
            System.out.println(obj.getUrl()+" is up. Response Code : " + responseMessage);
            connection.disconnect();`
}catch(Exception e){
e.printStackTrace();
}

0

এটি একটি পুরানো প্রশ্ন, তবে বিশ্রামের উপায়ে (জ্যাক্স-আরএস) দেখাতে দেয়:

import java.util.Arrays;
import javax.ws.rs.*

(...)

Response response = client
    .target( url )
    .request()
    .get();

// Looking if response is "200", "201" or "202", for example:
if( Arrays.asList( Status.OK, Status.CREATED, Status.ACCEPTED ).contains( response.getStatusInfo() ) ) {
    // lets something...
}

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