Hoe u http-postverzoeken in android uitvoert

HTTP-bericht maakt deel uit van een verouderde HTTP-klassen zoals Org.apache.http en androidhttpclient vanaf Android 5.1. Migreer uw code naar de HTTPURLCONNECTION-klassen die plaatsvinden van functie-functionaliteit.HTTP-post wordt gebruikt in Java om te vragen dat een specifieke webserver die gegevens in een aanvraagformulier wordt ingediend en opslaan. De gegevens worden ingediend en opgeslagen in naam-waardeparen. Voorbeelden van paren zijn: E-mail-Uw e-mailadres- Gebruikersnaam-Uw gebruikersnaam- en wachtwoord-uw wachtwoord.

Stappen

Deel 1 van 2:
Een TRY-blok en HTTPURLConnection-object maken
1. Voeg Internet-machtigingen toe aan het Android-manifest. Het Android-manifest is een XML-bestand dat belangrijke informatie biedt aan het Android-systeem dat apparaatcompatibiliteit en toegang tot functies bepaalt. In de "Androidmanifest.XML "-bestand, voer de volgende regel in om internettoegang te bieden.
 Android: naam ="Android.toestemming.Internet" />
  • 2. Maak een try-blok. In Java is een try-instructie een uitzonderingshandler die voorkomen dat het programma crasht als het niet in staat is om een ​​actie uit te voeren. Omdat dit een verbinding met een netwerklocatie nodig heeft, krijgt een try-instructie een uitzondering als het niet in staat is om een ​​verbinding tot stand te brengen. U kunt dit toevoegen aan een nieuwe Java-methode.
    Probeer {// Enter-statements die uitzonderingen kunnen veroorzaken}
  • 3. Bouw HttpurlConnection en URL-objecten. Java is een objectgeoriënteerde taal. Een object bestaat uit staten en gedragingen die een instantie van een klasse is. Het HTTPURLCONNECTION-object verzendt en ontvangt gegevens via internet. Begin in uw code uw nieuwe methode door een URL-object aan te maken en een URL toe te wijzen voor het HTTPURLConnection-object om verbinding met te maken.
    URL URL = Nieuwe URL ("http: // excepturll.com / ") - HTTPURLCONNECTIE-client = (httpurlconnection) URL.OpenConnection ()-
  • Voor de beste praktijken, vestig u de URL- en HTTPURLConnection-objecten buiten het try-blok om het gemakkelijker te maken om uitzonderingen te vangen.
  • URL URL = Nieuwe URL ("http: // excepturll.com / ") - HTTPURLCONNECTIE-client = null-probeer {client = (httpurlconnection) URL.OpenConnection () -}
    Deel 2 van 2:
    Het plaatsen van het uitgangsverzoek en het hanteren uitzonderingen
    1. Stel de aanvraagmethode in om te plaatsen. Om informatie naar de server te verzenden, moet u het type HTTPURLCONNECTION-object instellen om te posten en de uitvoer in te stellen op True met SetDooutPut (). Gebruik de functie SetRequestproperty () om een ​​algemene eigendommen in te stellen die twee elementen vereist, een sleutel met een bekend verzoek van de server en een waarde die zich in de bijbehorende toets bevindt.
    • De functie SETREQUESTPROPERTY () wordt gebruikt als de Accept-Codering-aanvraagkopbal om automatische decompressie uit te schakelen.
    cliënt.SetRequestMethod ("Post") - Client.SetRequestProperty ("Key", "Waarde") - Client.SetDooutput (TRUE)-
  • 2. Uitvoer de stroom naar de server. U moet de uitvoerstroom van de server aanvragen om naar de uitgangsstroom te kunnen schrijven of te plaatsen, en vervolgens de stroom af te spoelen en te sluiten wanneer u klaar bent.
    Outputstream OutlusPost = Nieuwe bufferoutputstream (Client.GetoutPutStream ()) - Writestream (outputpost) -outputpost.flush () - outputpost.dichtbij()-
  • Om uitvoeringsredenen is het een goed idee om de server te laten weten hoe groot in bytes de inhoud zal zijn. De beste methode is SetFixedLenthstreamingMode (INT) wanneer de lichaamslengte bekend is, terwijl SetschunkedStreamingMode (INT) wordt gebruikt als de lengte niet bekend is. Niet gebruiken van een van de vorige methoden, zorgt ervoor dat het HTTPURLLConnection-object het volledige lichaam in het geheugen buffert voordat u wordt verzonden.
  • cliënt.SetfixedLenthstreamingMode (outputpost.Getbytes ().lengte) -client.SetchunkedSreamingMode (0)-
  • 3. Vang eventuele uitzonderingen. Nadat de try-instructie, gebruik het vangstblok om te controleren op een uitzondering voor invoer en uitvoer met IoException, vang een URL-fout met de Malformedurl-uitzondering en controleer of de URL geen reactie op tijd geeft met de Sockettime Outexception.
    Catch (Malformedurexception-fout) {// verwerkt een onjuist ingevoerde URL} Catch (SockettimeOutException-fout) {// Handles URL-toegang Time-out.} Catch (IoException Fout) {// verwerkt invoer- en uitvoerfouten}
  • 4. Ontkoppelen van de URL. Nadat u klaar bent met uw URL-verbinding, moet u loskoppelen van de URL. Controleer of u bent aangesloten op een URL voordat u probeert te ontkoppelen.
    Eindelijk {if (client != null) // Zorg ervoor dat de verbinding niet null is.cliënt.verbinding verbreken()-}
  • Tips

    Dingen die je nodig hebt

    • Java Ide
    • Android-ontwikkelingstools (SDK, emulator, enz.)
    • Android-ontwikkelaar`s telefoon of ander Android-apparaat (optioneel voor testen)
    • Internetverbinding (voor testen)
    Deel in het sociale netwerk:
    Vergelijkbaar