[JAVA] Mémorandum de programmation de 51 ans Code mémorandum pour la communication réseau Socket | HttpURLConnection

Socket

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

        //Je pense sur la prémisse d'un smartphone!
        //Si vous êtes connecté à Internet, je vais essayer de me connecter au site de manière asynchrone!
        //Vérifiez d'abord la connexion!
        ConnectivityManager manager      = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        Network network                  = manager.getActiveNetwork();
        NetworkCapabilities capabilities = manager.getNetworkCapabilities(network);

        //Vérifiez la connexion Internet avec hasTransport of capabilities
        // Wi-Si vous êtes connecté via une communication Fi ou mobile, la communication Socket sera effectuée de manière asynchrone!
        if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
            new httpAsynctask().execute();
        }else{
            Log.d("\nConnection State","Non connecté au net");
        }
    }

    private class httpAsynctask extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... aVoid) {
            //Merci pour votre aide, laissez-moi accéder à Google
            String site       = "www.google.co.jp";
            //= Définir quel type de communication est effectué =
            //HTTP version 1.1 OBTENIR la communication
            //L'hôte de destination de la connexion est Google!
            //Fermez la connexion après GET
            String httpsocket = "GET / HTTP/1.1 \n" +
                    "Host: " + site + "\n" +
                    "Connection: close\n\n";

            //Un tampon de chaîne qui stocke le contenu HTML de type Google
            // socket       :Lien
            // BufferWriter :Accumuler le HTML à lire dans le buffer
            // BufferReader :Lire le HTML à partir du tampon
            StringBuffer   stringBuffer = new StringBuffer();
            Socket         socket       = null;
            BufferedWriter writer       = null;
            BufferedReader reader       = null;

            try {
                //Dans la prise"www.google.co.jp",Définir sur le port 80
                //Définir des flux pour l'écrivain et le lecteur
                //HTTP1 vers écrivain.1 Lire le contenu HTML acquis par la communication GET
                socket = new Socket(site, 80);
                writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer.write(httpsocket);
                writer.flush();

                //À partir du tampon écrit par l'écrivain
                //Lire ligne par ligne avec le lecteur
                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);
        }
    }
}

Pour la communication de socket, spécifiez FQDN (nom de domaine complet)!

HttpURLConnection

python


public class MainActivity extends AppCompatActivity {
    private TextView textView;

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

        //À utiliser avec AsyncTask!
        textView = findViewById(R.id.textView);

        //Tout d'abord, vérifiez l'état de votre connexion Internet!
        //Préparez les capacités du réseau!
        //Vous pouvez vérifier la connexion avec la capacité hasTransport
        //     getSystemService(CONNECTIVITY_SERVICE)Obtenez l'objet qui gère l'état de la connexion avec le gestionnaire
        //Objet de gestion de connexion getActiveNetwork()Obtenez l'objet de connexion actif dans le réseau
        //Obtenir des informations sur les performances du réseau pour les fonctionnalités des objets de connexion actifs
        ConnectivityManager manager      = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
                                           // getActiveNetwork()Est une autorisation manifeste_NETWORK_ÉTAT requis
        Network             network      = manager.getActiveNetwork();
        NetworkCapabilities capabilities = manager.getNetworkCapabilities(network);

        //Vérifiez la connexion WIFI avec la capacité a la méthode de transport
        //Communication asynchrone uniquement lorsqu'elle est connectée au WIFI!
        if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
            new httpAsyncTask().execute();
        }else{
            Log.d("\n\nMSG","no connect\n\n");
        }
    }

    //Communication asynchrone AsyncTask<doInBackgroundURL,onProgressUpdateInteger...,onPostExecute(Result)>
    private class httpAsyncTask extends AsyncTask<Void,Void,String> {
        @Override
        protected String doInBackground(Void... aVoid) {
            //clause try La clause catch déclare enfin les variables utilisées dans la clause!
            HttpURLConnection   urlConnection = null;
            BufferedReader      reader        = null;
            StringBuffer        stringBuffer  = new StringBuffer();

            try{
                //Paramètres de connexion avec HttpURLConnection!
                urlConnection   = (HttpURLConnection) new URL("https://google.co.jp").openConnection();
                //Préparation à la lecture des informations de page de type Google empilées dans Buffer! Flux d'entrée()J'utiliserai!
                reader          = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                //Les traitements fastidieux tels que FileReader et InputStream doivent être enveloppés dans Buffer et utilisés par référence

                //Lire ligne par ligne depuis Buffer et stocker dans stringButter
                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()Envoyer à
            return stringBuffer.toString();
        }

        // doInBackground()Reçoit une chaîne de et fait quelque chose que vous voulez faire.
        //Ici, vous pouvez écrire du code pour faire fonctionner les pièces de l'interface utilisateur!
        @Override
        protected void onPostExecute(String stringBuffer){
            textView.setText(stringBuffer);
        }
    }
}

Parle à toi-même

--getSystemService (): méthode contextuelle --CONNECTIVITY_SERVICE: Constante de contexte

Recommended Posts

Mémorandum de programmation de 51 ans Code mémorandum pour la communication réseau Socket | HttpURLConnection
Programmation à partir de 51 ans Notification IntentService Service Code mémorandum / résumé
Programmation à partir de 51 ans mémorandum android Timer
Planification à partir de 51 ans (actuellement 52) Mémorandum VScode javadoc
Processus de mémorandum de programmation thread de 51 ans Handler -reference
Programmation à partir de 51 ans Remarque: Confirmation de la connexion réseau Android
Programmation à partir de 51 ans Remarque - référence
Programmation à partir de 51 ans Note Service - référence
Programmation à partir de Memorandum of Thread de 51 ans
Programmation à partir de 51 ans [Shakyo] Intent IntentFilter-reference
Programmation à partir de 51 ans mémo Android Activity Manager mémo
Programmation à partir de 51 ans Remarque AsyncTask --reference [Shakyo]
Programmation à partir de 51 ans Make FusedLocationProviderClient resident in ForegroundService
Programmation à partir de 51 ans Remarque Android Rappel de communication asynchrone Traitement après la fin d'AsyncTask Généralisation et standardisation supplémentaires
Programmation à partir de 51 ans Remarque: Restrictions d'exécution en arrière-plan OverView [Shakyo]
Un mémorandum pour écrire un beau code
(Actuellement 52) programmation à partir de 51 ans Note 3 lignes Déplacer le focus sur le bouton Android
Mémorandum de programmation de 51 ans (actuellement 52) java.awt javax.swing // Java 11 ou plus récent est requis pour fonctionner