[JAVA] Programmiermemorandum aus 51 Jahre altem Memorandumcode für die Netzwerkkommunikation Socket | HttpURLConnection

Socket

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Ich denke an die Prämisse eines Smartphones!
        //Wenn Sie mit dem Internet verbunden sind, werde ich versuchen, asynchron eine Verbindung zur Site herzustellen!
        //Überprüfen Sie zuerst die Verbindung!
        ConnectivityManager manager      = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        Network network                  = manager.getActiveNetwork();
        NetworkCapabilities capabilities = manager.getNetworkCapabilities(network);

        //Überprüfen Sie die Netzverbindung mit hasTransport der Funktionen
        // Wi-Wenn Sie über Fi oder Mobilfunk verbunden sind, erfolgt die Socket-Kommunikation asynchron!
        if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
            new httpAsynctask().execute();
        }else{
            Log.d("\nConnection State","Nicht mit dem Netz verbunden");
        }
    }

    private class httpAsynctask extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... aVoid) {
            //Vielen Dank für Ihre Hilfe. Lassen Sie mich auf Google zugreifen
            String site       = "www.google.co.jp";
            //= Legen Sie fest, welche Art von Kommunikation durchgeführt wird =
            //HTTP Version 1.1 GET Kommunikation
            //Der Verbindungsziel-Host ist Google!
            //Schließen Sie die Verbindung nach GET
            String httpsocket = "GET / HTTP/1.1 \n" +
                    "Host: " + site + "\n" +
                    "Connection: close\n\n";

            //Ein Zeichenfolgenpuffer, der Google-ähnlichen HTML-Inhalt speichert
            // socket       :Verbindung
            // BufferWriter :Sammeln Sie den zu lesenden HTML-Code im Puffer
            // BufferReader :Lesen Sie HTML aus dem Puffer
            StringBuffer   stringBuffer = new StringBuffer();
            Socket         socket       = null;
            BufferedWriter writer       = null;
            BufferedReader reader       = null;

            try {
                //In der Steckdose"www.google.co.jp",Auf Port 80 setzen
                //Stellen Sie Streams für Writer und Reader ein
                //HTTP1 an Writer.1 Lesen Sie den durch die GET-Kommunikation erfassten HTML-Inhalt
                socket = new Socket(site, 80);
                writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer.write(httpsocket);
                writer.flush();

                //Aus dem vom Schreiber geschriebenen Puffer
                //Lesen Sie Zeile für Zeile mit dem Leser
                while (reader.readLine() != null) {
                    stringBuffer.append(reader.readLine());
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (writer != null) writer.close();
                    if (reader != null) reader.close();
                    if (socket != null) socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringBuffer.toString();
        }
        @Override
        protected void onPostExecute(String stringBuffer){
            Log.d("\n START \n",stringBuffer);
        }
    }
}

Geben Sie für die Socket-Kommunikation den vollqualifizierten Domänennamen (FQDN) an!

HttpURLConnection

python


public class MainActivity extends AppCompatActivity {
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Verwendung mit AsyncTask!
        textView = findViewById(R.id.textView);

        //Überprüfen Sie zunächst den Status Ihrer Internetverbindung!
        //Bereiten Sie die Netzwerkfunktionen vor!
        //Sie können die Verbindung mit der Funktion hasTransport überprüfen
        //     getSystemService(CONNECTIVITY_SERVICE)Rufen Sie das Objekt ab, das den Verbindungsstatus mit dem Manager verwaltet
        //Verbindungsverwaltungsobjekt getActiveNetwork()Holen Sie sich das aktive Verbindungsobjekt im Netzwerk
        //Informationen zur Netzwerkleistung für Funktionen für aktive Verbindungsobjekte abrufen
        ConnectivityManager manager      = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
                                           // getActiveNetwork()Ist Manifest Erlaubnis ACCESS_NETWORK_STAAT erforderlich
        Network             network      = manager.getActiveNetwork();
        NetworkCapabilities capabilities = manager.getNetworkCapabilities(network);

        //Überprüfen Sie die WIFI-Verbindung mit der Funktion hasTransport
        //Asynchrone Kommunikation nur bei Verbindung mit WIFI!
        if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
            new httpAsyncTask().execute();
        }else{
            Log.d("\n\nMSG","no connect\n\n");
        }
    }

    //Asynchrone Kommunikation AsyncTask<doInBackgroundURL,onProgressUpdateInteger...,onPostExecute(Result)>
    private class httpAsyncTask extends AsyncTask<Void,Void,String> {
        @Override
        protected String doInBackground(Void... aVoid) {
            //try-Klausel catch-Klausel deklariert schließlich die in der Klausel verwendeten Variablen!
            HttpURLConnection   urlConnection = null;
            BufferedReader      reader        = null;
            StringBuffer        stringBuffer  = new StringBuffer();

            try{
                //Verbindungseinstellungen mit HttpURLConnection!
                urlConnection   = (HttpURLConnection) new URL("https://google.co.jp").openConnection();
                //Vorbereitung zum Lesen von Google-ähnlichen Seiteninformationen, die in Buffer gesammelt wurden! Eingabestrom()Ich werde benützen!
                reader          = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                //Zeitaufwändige Verarbeitung wie FileReader und InputStream sollten in Buffer eingeschlossen und als Referenz verwendet werden

                //Zeile für Zeile aus Buffer lesen und in stringButter speichern
                while(reader.readLine() != null){
                    stringBuffer.append(reader.readLine());
                }
            }catch(Exception e){
                return "MSG : FAILED TO CONNECT";
            }finally{
                try {
                    if(reader        != null) reader.close();
                    if(urlConnection != null) urlConnection.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            // onPostExecute()Senden an
            return stringBuffer.toString();
        }

        // doInBackground()Erhält eine Zeichenfolge von und führt etwas aus, das Sie tun möchten.
        //Hier können Sie Code schreiben, um UI-Teile zu bedienen!
        @Override
        protected void onPostExecute(String stringBuffer){
            textView.setText(stringBuffer);
        }
    }
}

Sprich mit dir

--getSystemService (): Kontextmethode --CONNECTIVITY_SERVICE: Kontextkonstante

Recommended Posts

Programmiermemorandum aus 51 Jahre altem Memorandumcode für die Netzwerkkommunikation Socket | HttpURLConnection
Programmierung ab 51 Jahre Notification IntentService Service Code Memorandum / Zusammenfassung
Programmierung von 51 Jahre alten Memorandum Android Timer
Planung ab 51 Jahren (derzeit 52) Memorandum VScode javadoc
Programmier-Memorandum-Prozess-Thread aus 51 Jahre alter Handler-Referenz
Programmierung ab 51 Jahren Hinweis: Bestätigung der Android-Netzwerkverbindung
Programmierung ab 51 Jahren Hinweis - Referenz
Programmierung ab 51 Jahre Hinweis Service - Referenz
Programmierung aus einem 51 Jahre alten Memorandum of Thread
Programmierung ab 51 Jahren [Shakyo] Intent IntentFilter-Referenz
Programmierung aus 51 Jahre altem Android-Memo Activity Manager-Memo
Programmierung ab 51 Jahren Hinweis AsyncTask - Referenz [Shakyo]
Programmieren ab 51 Jahren Machen Sie FusedLocationProviderClient in ForegroundService ansässig
Programmierung ab 51 Jahren Hinweis Android Asynchroner Kommunikationsrückruf Verarbeitung nach Beendigung von AsyncTask Weitere Verallgemeinerung und Standardisierung
Programmierung ab 51 Jahren Hinweis: Einschränkungen bei der Hintergrundausführung OverView [Shakyo]
Ein Memorandum zum Schreiben von schönem Code
(Derzeit 52) Programmierung ab 51 Jahren Hinweis 3 Zeilen Fokus auf Android-Taste verschieben
Zum Ausführen ist ein Programmiermemorandum von 51 Jahren (derzeit 52) java.awt javax.swing // Java 11 oder neuer erforderlich