Не отправлять http запрос в сервис Android - PullRequest
0 голосов
/ 03 июня 2019


Я пытаюсь отправить запрос на локальный сервер в фоновом режиме. Но мне не удается.

    class MyService2 : Service() {
     ..........
    fun Check_Presence(){
    var url="http://192.168.1.158/cgi-bin/cp/login.sh"

    val queue = Volley.newRequestQueue(this)
    val postRequest = object : StringRequest(
        Request.Method.POST, url,
        Response.Listener {response ->
            Toast.makeText(getBaseContext(),  "response"+response, Toast.LENGTH_LONG).show();
        },
        Response.ErrorListener() { response ->
            Toast.makeText(getBaseContext(),  "Not Send Request", Toast.LENGTH_LONG).show();
        }
    ) {
        override fun getParams(): Map<String, String> {
            val params = HashMap<String, String>()
            params["status"] = "1"
            return params
        }
    }
    queue.add(postRequest)

     }
    }

файл манифеста:

<application
........
  <service
    android:name=".MyService2"
        android:enabled="true"
        android:exported="true">
    </service>
</application>

MainActivity:

val serviceClass = MyService2::class.java
val serviceIntent = Intent(this, serviceClass)
this.startService(serviceIntent)

Покапоскольку программа работает, она работает правильно и отображает ответное сообщение ...
Но когда я закрываю программу, программа отображает сообщение "Не отправлять запрос".

Примечание: функция Check_Presenceработает каждую минуту.


Когда я проверил интернет в службе, я понял, что интернет не был подключен.

fun Check_Internet(){
    val connectivityManager=this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val networkInfo=connectivityManager.activeNetworkInfo
    if (networkInfo!=null && networkInfo.isConnected) {
        Toast.makeText(applicationContext, "INTENET OK : ", Toast.LENGTH_LONG).show();
    }
    else{
        Toast.makeText(applicationContext, "NO INTERNET : ", Toast.LENGTH_LONG).show();
    }
}

Пожалуйстапомогите мне.
Мое устройство: Android 8

1 Ответ

0 голосов
/ 03 июня 2019

Если вы не возражаете, я бы попросил вас проверить или выполнить 3 вещи: *

  1. Получили ли вы разрешение на доступ к Интернету и сети в своем манифесте?

  2. Пожалуйста, используйте библиотеку Retrofit для целей HTTP, так как Retrofit - это легко поддерживаемая, простая и эффективная библиотека.

  3. Прежде чем вызывать свой локальный сервер (или что-то еще), протестируйте его с Postman.приложение, чтобы получить четкое представление о состоянии вашей сети, производительности сервера и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...