Дооснащение 2.7.1 соединение не удается подключиться - PullRequest
1 голос
/ 20 февраля 2020

Я использую Retrofit 2.7.1, но не могу подключиться!

Вот сообщение об ошибке, которое я получаю:

java.net.UnknownServiceException: CLEARTEXT communication to www.posh24.se not permitted by network security policy

А вот реализация кода:

1 - Я реализовал следующие строки в Gradle.

implementation 'com.squareup.retrofit2:retrofit:2.7.1'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.squareup.retrofit2:converter-gson:2.7.1'

2 - Я добавил эти строки в Manifest.

    android:usesCleartextTraffic="true"
    android:networkSecurityConfig="@xml/network_security_config"

3 - И для второй строки в предыдущем шаг, создал каталог XML и network_security_config. xml, содержащий приведенный ниже скрипт.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">www.posh24.se</domain>
    </domain-config>
</network-security-config>

4- Я использовал простой вызов, но он не удался! это мой код:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://www.posh24.se/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        ApiServiceByRetrofit apiServiceByRetrofit = retrofit.create(ApiServiceByRetrofit.class);
        Call<String> call = apiServiceByRetrofit.getsomething();

        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {
            }
        });
    }
    public interface ApiServiceByRetrofit {
        @GET("kandisar")
        Call<String> getsomething();
    }
}

1 Ответ

0 голосов
/ 20 февраля 2020
<uses-permission android:name="android.permission.INTERNET"

Из того, что я вижу, вам не хватает разрешения на соединение inte rnet в манифесте Android. Также ваше устройство подключено к inte rnet?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.retrofitandroid">

    **<uses-permission android:name="android.permission.INTERNET"/>**
    <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/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

РЕДАКТИРОВАТЬ

Попробуйте добавить https вместо http в URL https://www.posh24.se

...