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);
}
}
}
--getSystemService (): méthode contextuelle --CONNECTIVITY_SERVICE: Constante de contexte
Recommended Posts