HttpURLSavienojuma klase ir abstrakta klase, kas tieši stiepjas no URL Connection klase . Tas ietver visas savas vecākklases funkcionalitātes ar papildu HTTP specifiskām funkcijām. HttpsURLConnection ir vēl viena klase, kas tiek izmantota drošākam HTTPS protokolam.
Tā ir viena no populārākajām izvēlēm Java izstrādātāju vidū mijiedarbībai ar tīmekļa serveriem, un Android izstrādātāju komanda ir oficiāli ieteikusi to izmantot visur, kur vien iespējams. Vēlāk mēs ilustrēsim vienkāršu interaktīvas lietojumprogrammas ieviešanu, kas izmanto Microsoft emotion API, lai izgūtu emociju rādītājus no attēla, izmantojot HttpURLConnection klases metodes.
Konstruktors
Metodes (izņemot URLConnection klasē)
| Metode | Veikta darbība |
|---|---|
| atvienot () | Norādīts, ka serverim nosūtītie pieprasījumi nākotnē ir maz ticami. |
| getErrorStream() | Iegūst kļūdu straumi, ja serveri nevar izveidot savienojumu vai radās kāda kļūda. Tajā var būt informācija par to, kā novērst kļūdu no servera. |
| getFollowRedirects() | Atgriež patiesu vai nepatiesu atkarībā no automātiskās novirzīšanas vai nē. |
| getHeaderField() | Atgriež n-to galvenes lauku vai nulli, ja tā neeksistē. Tas ignorē URLConnection klases metodi getHeaderField. |
| getInstanceFollowRedirects() | Atgriež vērtību True vai False atkarībā no tā, vai ir iestatīta automātiskā gadījumu novirzīšana. |
| getPermission() | Izgūst atļauju, kas nepieciešama, lai izveidotu savienojumu ar mērķa saimniekdatoru un portu. |
| getResponseCode() | Izmanto, lai izgūtu atbildes statusu no servera. |
| getResponseMessage() | Izgūst atbildes ziņojumu. |
| getRequestMethod() | Atgriež pieprasījuma metodi. |
| setInstanceFollowRedirects() | Iestata, vai atbildes koda pieprasījumi tiek automātiski novirzīti, izmantojot šo HTTP URL savienojuma gadījumu. Tas ignorē vispārīgāko setFollowRedirects() |
| setRequestMethod() | Izmanto, lai iestatītu pieprasījuma metodi. Noklusējums ir GET |
| setFixedLengthStreamingMode() | Izmanto, lai iestatītu izvades straumē rakstītā satura garumu, ja tas ir iepriekš zināms. |
| setFollowRedirects() | Iestata, vai 3xx atbildes koda pieprasījums tiek automātiski novirzīts vai nē. |
| setCunkedStreamingMode() | Izmanto, ja satura garums nav zināms. Tā vietā, lai izveidotu fiksēta garuma buferi un ierakstītu to serverī, saturs tiek sadalīts gabalos un pēc tam ierakstīts. Ne visi serveri atbalsta šo režīmu. |
| izmantojot starpniekserveri () | Atgriež vērtību True, ja savienojums ir izveidots, izmantojot starpniekserveri, else false |
Padoms: Būtu labi zināt, kā lasīt URL, izmantojot šo HttpURLConnection klasi, lai labāk izprastu tālāk norādīto ieviešanu.
Ilustrācija: Visu procesu īsumā var saprast šādi:
java tostring
Savienojuma izveide ar Microsoft emotion API serveri, izmantojot tālāk norādīto URL
https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize
Pieprasījuma aktivizēšanas rekvizītu un metožu iestatīšana: Šajā solī mēs iestatām mūsu pieprasījuma objekta metodes un īpašības. Vispirms mēs iestatām metodi kā pieprasījuma metodi, kas jāizsauc kā POST. Mēs arī iestatījām rekvizītu User-Agent, lai nodrošinātu, ka serveris nebloķē mūsu pieprasījumu neparedzēta atbildes veida dēļ, kas citādi darbotos jebkurā tīmekļa pārlūkprogrammā.
http get pieprasījuma aktivizēšana: Kad esam izveidojuši URL un esam izveidojuši objektu HttpURLConnection, mums faktiski ir jāaktivizē pieprasījums. To var skaidri izdarīt, izmantojot connect() metodi. Tas tiek darīts diezgan netieši, kad mēs cenšamies izmantot jebkuru atbildes ziņojumu, piemēram, getOutputStream() utt.
Rakstīšana uz serveri: Kad esam ieguvuši izvades straumi serverī, mēs augšupielādējam savu attēlu serverī apstrādei.
Nolasot atbildi no servera: Pēc ievades straumes iegūšanas mēs izmantojam bufferedreader, lai izvadītu rezultātus no servera.
f filmas
Īstenošana:
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()); } } } }
Izvade:
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}}] Izvades skaidrojums: Lai pārbaudītu šo programmu, jānorāda apstrādājamo attēlu skaits un pēc tam jānorāda attēlu URL. Varat atstāt neiestatītu satura garuma rekvizītu, jo serveris to apstrādās automātiski, taču, ja zināt garumu, mainiet to katru reizi atbilstoši. Dotajā avota kodā, jo satura garums ir iestatīts uz 83 baiti, ir jāizmanto šāda izmēra URL.
Sample URL: https://media.geeksforgeeks.org/wp-content/uploads/Brad_Pitt.webp
Piezīme: Tā kā tā ir interaktīva lietojumprogramma, ieteicams to palaist bezsaistes platformās. JSON bibliotēka ir jāiekļauj arī projekta būvēšanas ceļā, lai palaistu šo lietojumprogrammu.
Izveidojiet viktorīnu