Задать вопрос
itsmatrik
@itsmatrik
Я - человек.

Почему не проходит запрос на сервер?

У меня есть приложение Expo, в котором я пытаюсь отправлять HTTP-запросы на сервер flask работающий в моей локальной сети. При отправке HTTP-запросов я использую IP-адрес своего компьютера (например, 192.168.29.1), а не localhost. При тестировании приложения с помощью сервера разработки Expo всё работает нормально. Однако, когда я собираю приложение в APK и устанавливаю его на мобильное устройство, оно не может подключиться к серверу. Вот код:
const handleSendData = async () => {
    if (!photo || !selectedCategory || !photoHeading || !photoLocation) {
      alert('Пожалуйста, убедитесь, что все данные доступны перед отправкой.');
      return;
    }

    try {
      // Чтение фотографии в формате base64
      const base64Response = await fetch(photo);
      const blob = await base64Response.blob();
      const reader = new FileReader();
      reader.readAsDataURL(blob);
      reader.onloadend = async () => {
        const base64data = reader.result;

        // Подготовка данных для отправки
        const data = {
          category: selectedCategory,
          heading: photoHeading,
          latitude: photoLocation.latitude,
          longitude: photoLocation.longitude,
          photo: base64data,
        };

        // Отправка данных на сервер
        const response = await fetch(`http://${serverIp}/detect`, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify(data),
        });

        if (response.ok) {
          const result = await response.json();
          alert('Данные успешно отправлены!');
          console.log('Server response:', result);
        } else {
          alert('Ошибка при отправке данных.');
          console.error('Server error:', response.status);
        }
      };
    } catch (error) {
      console.error('Ошибка при отправке данных:', error);
      alert('Произошла ошибка при отправке данных.');
    }
  };

  const handleChangeIp = () => {
    setIsIpModalVisible(true);
  };


Компьютер и телефон при этом находятся в одной сети (точка доступа телефона). Ip компьютера правильный
Вот код app.json, если вдруг в нем может быть проблема..
{
  "expo": {
    "name": "radar-app",
    "slug": "radar-app",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "userInterfaceStyle": "light",
    "newArchEnabled": true,
    "splash": {
      "image": "./assets/splash-icon.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#ffffff"
      },
      "package": "com.matrik_by.radarapp",
      "permissions": [
        "INTERNET",
        "ACCESS_FINE_LOCATION",
        "CAMERA",
        "READ_EXTERNAL_STORAGE",
        "WRITE_EXTERNAL_STORAGE"
      ],
      "usesCleartextTraffic": true
    },
    "web": {
      "favicon": "./assets/favicon.png"
    },
    "extra": {
      "eas": {
        "projectId": "fcf2c3f0-a450-4002-b7b2-b710aa5c10ce"
      }
    }
  }
}
  • Вопрос задан
  • 30 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы