Olaf-06
@Olaf-06
Студент

Использую okHttp, в Callback вызывается метод onFailure. Как исправить?

class MainActivity : AppCompatActivity() {

    val okHttpClient: OkHttpClient = OkHttpClient()
    val request: Request = Request.Builder().get().url("http://dev-tasks.alef.im/task-m-001").build()
    val call: okhttp3.Call = okHttpClient.newCall(request)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
      
        call.enqueue(object : okhttp3.Callback{
            override fun onFailure(call: okhttp3.Call, e: IOException) {
                Log.d("myLog", "onFailure: ")
            }

            override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) {
                Log.d("myLog", "onResponse: ")
            }

        })
    }
}


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.aleftestproject">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AlefTestProject">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Не сразу заметил, что можно вывести текст исключения. Короче говоря он таков: CLEARTEXT communication to dev-tasks.alef.im not permitted by network security policy
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Olaf-06
@Olaf-06 Автор вопроса
Студент
Очень странно, что после часа (иногда часов) поиска решения проблемы, после чего я задаю вопрос на хабре, ответ находится сам собой и очень быстро и так не впервой. Я решил свою проблему, но частично, сами узнаете почему позже. Оставляю ответ для будущих поколений. Он работает, если onFailure выдаёт сообщение подобное моему: "CLEARTEXT communication to dev-tasks.alef.im not permitted by network security policy

Информацию брал отсюда: https://coderoad.ru/59856341/OkHttp-HTTP-FAILED-ja...

В src/main/res/xml(папочку создадите)/ нужно создать файл network_security_config.xml

В самом файле напишите это:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!--Set application-wide security config using base-config tag.-->
    <base-config cleartextTrafficPermitted="true"/>
</network-security-config>


И добавляете в манифест строчку:
<application
     ---
        android:networkSecurityConfig="@xml/network_security_config">


В этой строчке загвоздка, ибо мне нужно, чтоб моё "приложение" работало с android 5, но сама эта строчка поддерживается только с API level 24. Скорее всего буду искать иное решение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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