diadia

興味があることをやってみる。自分のメモを残しておきます。

retrofit エラー対処

エラー1

java.lang.IllegalArgumentException: @Field parameters can only be used with form encoding.

上記のエラーメッセージが出る場合には、インターフェースに@FormUrlEncodedアノテーションを付け忘れている可能性がある。 つけて再実行する。

interface ShareService {
    @FormUrlEncoded
    @POST("rest-auth/login/")
    fun login(@Field("email") email: String?, @Field("password") password: String?) : Call<AuthModel>
}

エラー2

java.net.UnknownServiceException: CLEARTEXT communication to 10.0.2.2 not permitted by network security policy

マニフェストファイルにhttp通信を行うパーミッションを記述していないことから生じるエラーである。 参考:https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>