Как сделать HTTP-вызов в Android

#android #http

Вопрос:

Я заметил это, когда создавал отдельный файл Java в своем проекте Android Studio
и запускал его. Он работает не так, как в обычном проекте java. Я хотел написать
код для выполнения HTTP-вызова и прочитать ответ. Прежде чем интегрироваться в приложение
, мне нужно его протестировать. Одним из способов может быть открыть Intellij Idea и написать
совершенно другой небольшой java-проект, а затем поместить этот код в
приложение для Android.

Комментарии:

1. В чем именно заключается ваш вопрос? Если вы хотите создать приложение, вам необходимо, по крайней мере, создать проект шаблона с манифестом (который включает разрешение на доступ в Интернет) и точкой входа (активность, приемник вещания, поставщик контента), который будет выполнять код из ваших файлов java.

2. Я хочу сделать HTTP-вызов из приложения для Android. С чего мне начать и как протестировать его, не запуская приложение

Ответ №1:

Есть несколько способов сделать это. Вы можете использовать Retrofit или okhttp.

использование залпа-один из самых простых способов:

 implementation 'com.android.volley:volley:1.2.0'
 

манифест:

     <uses-permission android:name="android.permission.INTERNET" />
 

в фрагменте/активности/ViewModel:

     private var USGS_REQUEST_URL =
    "example.com"

fun getResponse() {
    volleySingleton = VolleySingleton.getInstance(application)

}

   val stringRequest = StringRequest(
        Request.Method.GET, REQUEST_URL,
        { response ->
           //Handel your result
        },
        {
            Log.d(TAG, "error")
        }).setRetryPolicy(
        DefaultRetryPolicy(
            DefaultRetryPolicy.DEFAULT_TIMEOUT_MS, 3,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
        )
    ).setShouldCache(true)

 volleySingleton!!.addToRequestQueue(stringRequest)
 

Залповые залпы :

 class VolleySingleton constructor(context: Context){
companion object {
    /*
    @Volatile: meaning that writes to this field are immediately made visible to other threads.
     */
    @Volatile
    private var instance: VolleySingleton? = null
    fun getInstance(context: Context) = instance?: synchronized(this){
        instance?: VolleySingleton(context)
    }
}

/*
by lazy: requestQueue won't be initialized until this method gets called
 */
val requestQueue: RequestQueue by lazy {
    // applicationContext is key, it keeps you from leaking the
    // Activity or BroadcastReceiver if someone passes one in.
    Volley.newRequestQueue(context.applicationContext)
}

fun <T> addToRequestQueue(req: Request<T>){
    requestQueue.add(req)
}}
 

Комментарии:

1. Для использования volleySingleton в автономной программе kotlin следует ли мне использовать Maven или Gradle?

2. Я пробую приведенный выше пример в Intellij. Мой Intellij не показывает Gradle в поддержке фреймворка. Есть ли способ добавить gradle в существующий проект kotlin?

3. Я использую этот код в Android studio без каких-либо проблем. Для IntelliJ, я думаю, вам следует следовать этой инструкции. Ссылка