Per utilizzare chiamate HTTP in un progetto Android basato su Java (per Kotlin una libreria comoda e'
Fuel ) si puo' utilizzare
OKHttp anche se e' cosi' immediato utilizzarla
Per aggiungere la libreria al progetto si edita build.gradle(progetto) aggiugendo la riga in giallo
allprojects { repositories { google()
jcenter()
maven { url "https://jitpack.io" } }}
e si aggiunge la libreria indicata dalla riga in giallo
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.github.felHR85:UsbSerial:6.1.0' implementation("com.squareup.okhttp3:okhttp:4.5.0")}
Per prima cosa si aggiunge il permesso di accesso ad Internet nel Manifest
<uses-permission android:name="android.permission.INTERNET" />
In seguito si crea un directory
xml in
res e si crea un nuovo file XML denominato
network_security_config.xml con i permessi di accesso alla rete
Per esempio qui si abilita il traffico HTTP (HTTPS e' default) verso tutti i domini
network_security_config.xml
-----------------------------------------
<?xml version="1.0" encoding="utf-8"?><network-security-config xmlns:android="http://schemas.android.com/apk/res/android"> <base-config cleartextTrafficPermitted="true" />
</network-security-config>
-----------------------------------------
Si torna al Manifest e si aggiunge la riga in giallo
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"
il metodo standard per implementare la chiamata e' creare una classe
public static class senddata {
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string(); }
}
}
e poi chiamare il metodo per esempio in GET
senddata invio = new senddata();try {
String response = invio.run("http://XXX.XXXX.XXX.XXX/seriale/index.php?stringa="+data.toString()+"&batteria="+percentage);} catch (IOException e) {
e.printStackTrace();}