logo

Java.net.HttpURLConnection Class v jazyku Java

Trieda HttpURLConnection je abstraktná trieda priamo vychádzajúca z Trieda URLConnection . Zahŕňa všetky funkcie svojej nadradenej triedy s ďalšími funkciami špecifickými pre HTTP. HttpsURLConnection je ďalšia trieda, ktorá sa používa pre bezpečnejší protokol HTTPS. 

Je to jedna z obľúbených možností medzi vývojármi Java na interakciu s webovými servermi a tím vývojárov Android oficiálne navrhol používať ju všade, kde je to možné. Neskôr si ukážeme jednoduchú implementáciu interaktívnej aplikácie, ktorá využíva Microsoft emotion API na získanie skóre emócií z obrázka pomocou metód triedy HttpURLConnection.

tostring java

Konštruktér

    HttpURLConnection(URL u):Vytvorí httpurlconnection na zadanú URL

Metódy (iné ako v triede URLConnection)

MetódaAkcia vykonaná
odpojiť ()Označuje, že požiadavky na server sú v budúcnosti vysoko nepravdepodobné. 
getErrorStream()Získa tok chýb, ak sa server nemôže pripojiť alebo sa vyskytla nejaká chyba. Môže obsahovať informácie o tom, ako opraviť chybu zo servera.
getFollowRedirects()Vráti hodnotu true alebo false v závislosti od automatického presmerovania alebo nie.
getHeaderField()Vráti n-té pole hlavičky alebo hodnotu null, ak neexistuje. Prepíše metódu getHeaderField triedy URLConnection.
getInstanceFollowRedirects()Vráti hodnotu true alebo false v závislosti od toho, či je nastavené automatické presmerovanie inštancie alebo nie.
getPermission()Získa povolenie potrebné na pripojenie k cieľovému hostiteľovi a portu.
getResponseCode()Používa sa na získanie stavu odpovede zo servera.
getResponseMessage()Načíta správu s odpoveďou.
getRequestMethod()Vráti metódu požiadavky.
setInstanceFollowRedirects()Nastavuje, či budú požiadavky na kód odpovede automaticky presmerované touto inštanciou pripojenia HTTP URL. Prepíše všeobecnejšie setFollowRedirects()
setRequestMethod()Používa sa na nastavenie spôsobu požiadavky. Predvolená hodnota je GET
setFixedLengthStreamingMode()Používa sa na nastavenie dĺžky obsahu napísaného na výstupnom toku, ak je vopred známa.
setFollowRedirects()Nastavuje, či sa požiadavka na kód odpovede 3xx automaticky presmeruje alebo nie.
setChunkedStreamingMode()Používa sa, keď nie je známa dĺžka obsahu. Namiesto vytvorenia vyrovnávacej pamäte s pevnou dĺžkou a jej zápisu na server sa obsah rozdelí na kúsky a potom sa zapíše. Nie všetky servery podporujú tento režim. 
usingProxy()Vráti hodnotu true, ak je spojenie nadviazané pomocou servera proxy, inak hodnotu false

Tip: Bolo by dobré pochopiť, ako čítať URL pomocou tejto triedy HttpURLConnection, aby ste lepšie pochopili nižšie uvedenú implementáciu.



Ilustrácia: Celý proces možno v skratke pochopiť takto: 

Pripojenie k serveru Microsoft emotion API pomocou nižšie uvedenej adresy URL 

https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize

Nastavenie vlastností a metód pre spustenie požiadavky: V tomto kroku nastavíme metódy a vlastnosti objektu našej požiadavky. Najprv nastavíme metódu ako metódu požiadavky, ktorá sa má vyvolať ako POST. Nastavili sme tiež vlastnosť User-Agent, aby sme zabezpečili, že naša požiadavka nebude serverom zablokovaná z dôvodu neočakávaného typu odpovede, ktorá by inak fungovala v akomkoľvek webovom prehliadači.

porovnávanie reťazcov java

Spustenie žiadosti http get: Po vytvorení adresy URL a vytvorení objektu HttpURLConnection musíme skutočne spustiť požiadavku. Dá sa to urobiť explicitne metódou connect(). Je to skôr implicitne vykonané vždy, keď sa pokúsime použiť akúkoľvek správu s odpoveďou, ako je getOutputStream() atď.

Zápis na server: Keď získame výstupný tok na server, odošleme náš obrázok na server na spracovanie.

Čítanie odpovede zo servera: Po získaní vstupného toku použijeme bufferedreader na výstup výsledkov zo servera.

Implementácia:  

výnimka java throw
Java
// Java Program to Illustrate Use // of HttpURLConnection Class // to Retrieve Emotion score of Image // Using Microsoft Emotion API // Importing required classes import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import org.json.simple.JSONObject; // Main class // httpconclass class public class GFG {  // Main driver method  public static void main(String args[])  throws IOException  {  // Reading input via BufferedReader class  BufferedReader br = new BufferedReader(  new InputStreamReader(System.in));  int n = Integer.parseInt(br.readLine());  String key = '833921b016964f95905442e0fab0c229';  JSONObject ezm;  while (n-- > 0) {  String image = br.readLine();  ezm = new JSONObject();  ezm.put('url' image);  // Try block to check for exceptions  try {  // URL for microsoft cognitive server.  URL url = new URL(  'https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize');  HttpURLConnection con  = (HttpURLConnection)  url.openConnection();  // Setting the request method and  // properties.  con.setRequestMethod('POST');  con.setRequestProperty(  'Ocp-Apim-Subscription-Key' key);  con.setRequestProperty('Content-Type'  'application/json');  con.setRequestProperty('Accept'  'application/json');  // As we know the length of our content  // the following function sets the fixed  // streaming mode length 83 bytes. If  // content length not known comment the  // below line.  con.setFixedLengthStreamingMode(83);  // Setting the auto redirection to true  HttpURLConnection.setFollowRedirects(true);  // Overriding the default value set by  // the static method setFollowRedirect above  con.setInstanceFollowRedirects(false);  // Setting the doOutput to true for now  con.setDoOutput(true);  OutputStream out = con.getOutputStream();  // System.out.println(ezm.toString().getBytes().length);  // Writing on the output stream  out.write(ezm.toString().getBytes());  InputStream ip = con.getInputStream();  BufferedReader br1 = new BufferedReader(  new InputStreamReader(ip));  // Printing the response code  // and response message from server.  System.out.println('Response Code:'  + con.getResponseCode());  System.out.println(  'Response Message:'  + con.getResponseMessage());  // Note: Uncomment the following line to  // print the status of FollowRedirect  // property  // System.out.println('FollowRedirects:'  // +  // HttpURLConnection.getFollowRedirects());  // Printing the status of  // instanceFollowRedirect property  System.out.println(  'InstanceFollowRedirects:'  + con.getInstanceFollowRedirects());  // Printing the 1st header field  System.out.println('Header field 1:'  + con.getHeaderField(1));  // Printing if usingProxy flag set or not  System.out.println('Using proxy:'  + con.usingProxy());  StringBuilder response  = new StringBuilder();  String responseSingle = null;  while ((responseSingle = br1.readLine())  != null) {  response.append(responseSingle);  }  String xx = response.toString();  System.out.println(xx);  }  // Catch block to handle exceptions  catch (Exception e) {    // Display exception/s on console  System.out.println(e.getMessage());  }  }  } } 


výstup:  

Response Code:200 Response Message:OK FollowRedirects:true InstanceFollowRedirects:false Header field 1:no-cache Using proxy:false [{'faceRectangle':{'height':134'left':62'top':86'width':134}'scores':{'anger':4.105452E- 14'contempt':1.240792E-11'disgust':2.58925052E-11'fear':1.82401266E-17'happiness':1.0 'neutral':2.487733E-10'sadness':6.02089044E-14'surprise':2.665974E-12}}]

Vysvetlenie výstupu: Ak chcete otestovať tento program, mali by ste zadať počet obrázkov na spracovanie a potom poskytnúť adresy URL obrázkov. Vlastnosť dĺžky obsahu môžete ponechať nenastavenú, pretože server by ju spracoval automaticky, ale ak poznáte dĺžku, vždy ju zodpovedajúcim spôsobom upravte. Keďže v danom zdrojovom kóde je dĺžka obsahu nastavená na 83 bajtov, mala by sa použiť adresa URL tejto veľkosti. 

Sample URL: https://media.geeksforgeeks.org/wp-content/uploads/Brad_Pitt.webp

Poznámka: Keďže ide o interaktívnu aplikáciu, odporúča sa spustiť ju na offline platformách. Knižnica JSON by mala byť zahrnutá aj do cesty zostavenia projektu, aby bolo možné túto aplikáciu spustiť.

Vytvoriť kvíz