#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, я думаю, вам следует следовать этой инструкции. Ссылка