Я новичок в Android
Я позволил простому серверу работать на моем ArduinoMega, отвечая на запросы данных датчиков.Если я запрашиваю через Arduino любой интернет-браузер из LAN / WLAN / телефона, я получаю ответ, как я хотел.
Но если я отправляю запрос из своего приложения для Android (Android studio / java / okhttp3), яне получить ответ от сервера Arduino.Это как сервер не проверяет, что клиент стучит.
Если я запрашиваю какой-либо интернет-сайт с помощью моего приложения для Android, я получаю ответ с этого сайта
Я не получаю код ошибки.
Мои идеи a.Может быть, я не могу использовать локальный IP-адрес в качестве URL, как я могу сделать в интернет-браузере б.Может быть, для Android требуется для локальной сети другое разрешение как «ИНТЕРНЕТ» c.http / https проблема?
Код Arduino
#include <Ethernet.h>
byte mac[] = ...
byte ip[] = { 192, 168, 178, 123 }; // IP-Adresse
byte gateway[] = { 192, 168, 178, 1 }; // Gateway
byte subnet[] = { 255, 255, 255, 0 };
EthernetClient client;
EthernetServer server(80);
...
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
...
client = server.available();
if (client) {
приложение не передает последнее "если", поэтому я думаю, что сервер не получает запрос.
java-код
<uses-permission
android:name="android.permission.INTERNET" />
...
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private TextView mTextViewResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewResult = findViewById(R.id.text_view_result);
OkHttpClient client = new OkHttpClient();
String url ="http://192.168.178.123";
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
final String myResponse = response.body().string();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mTextViewResult.setText(myResponse);
}
});
}
}
});
}
}
Если я изменяю локальный IP-адрес на URL-адрес, я получаю ответ от сервера этого URL-адреса.