#android #kotlin #retrofit #retrofit2
Вопрос:
Я собираюсь попробовать доработать ПОСТ с помощью API перевода NAVER Papago. В 30-й строке файла MainActivity.kt возникает ошибка, ожидающая описания элемента, ожидаемого имени. Я искал с именем ошибки, но я не могу ее решить, поэтому я задаю этот вопрос.
Часть, в которой возникает ошибка, выглядит следующим образом.
callPostTransferPapago.enqueue(object:
Это основная активность.кт.
package com.example.papagoapi
import android.content.ContentValues.TAG
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
val CLIENT_ID = "clientId"
val CLIENT_SECRET = "clientSecret"
val BASE_URL_NAVER_API = "https://openapi.naver.com/"
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL_NAVER_API)
.addConverterFactory(GsonConverterFactory.create())
.build()
val api = retrofit.create(NaverAPI::class.java)
val callPostTransferPapago = api.transferPapago(CLIENT_ID, CLIENT_SECRET, "ko", "en", "안녕하세요. 이것은 테스트입니다.")
callPostTransferPapago.enqueue(object: Callback<ResultTransferPapago>{
override fun onResponse(
call: Call<ResultTransferPapago>,
response: Response<ResultTransferPapago>
) {
Log.d(TAG, "성공: ${response.raw()}")
}
override fun onFailure(call: Call<ResultTransferPapago>, t: Throwable) {
Log.d(TAG, "실패: $t")
}
})
}
Добавлен разрешенный код.
package com.example.papagoapi
import android.content.ContentValues.TAG
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val CLIENT_ID = "id"
val CLIENT_SECRET = "secret"
val BASE_URL_NAVER_API = "https://openapi.naver.com/"
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL_NAVER_API)
.addConverterFactory(GsonConverterFactory.create())
.build()
val api = retrofit.create(NaverAPI::class.java)
val callPostTransferPapago = api.transferPapago(CLIENT_ID, CLIENT_SECRET, "ko", "en", "안녕하세요. 이것은 테스트입니다.")
callPostTransferPapago.enqueue(object: Callback<ResultTransferPapago>{
override fun onResponse(
call: Call<ResultTransferPapago>,
response: Response<ResultTransferPapago>
) {
Log.d(TAG, "성공: ${response.raw()}")
}
override fun onFailure(call: Call<ResultTransferPapago>, t: Throwable) {
Log.d(TAG, "실패: $t")
}
})
}
}
Комментарии:
1. можете ли вы поделиться ответом в формате json ?
2. Это пример ответа. Добавлено в нижней части вопроса.
3. Это то, чего ты хочешь?
4. Можете ли вы поделиться также logcat ?
5. Проблема решена! Начиная с val CLIENT_ID, приведенный ниже код должен быть включен в onCreate() {}. Спасибо, что нашли время ответить на мой вопрос. Добавлен разрешенный код.
Ответ №1:
Вам нужно поместить свой callPostTransferPapago.enqueue(...)
вызов в какой-либо метод жизненного цикла действия, например. onCreate()
.
Комментарии:
1. Проблема решена! Начиная с val CLIENT_ID, приведенный ниже код должен быть включен в onCreate() {}. Огромное спасибо. Добавлен разрешенный код.