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);
}
}
}
--getSystemService (): Kontextmethode --CONNECTIVITY_SERVICE: Kontextkonstante