2017-07-20 27 views
10

Tôi cực kỳ mới đối với Kotlin và API nói chung và không thể tìm thấy cú pháp để tạo yêu cầu API bằng ngôn ngữ này. Tôi đang tạo một phiên bản di động của một trang web vì vậy tôi đang sử dụng Android Studio để tạo giao diện người dùng mới cho một chương trình phụ trợ đã được thiết lập. Các bước và cú pháp để tạo yêu cầu là gì? Bất kỳ trợ giúp nào được đánh giá cao.Làm thế nào để thực hiện một yêu cầu API trong Kotlin?

+2

Kiểm tra bài viết này: http://codeflex.co/simple-restful-service-with-kotlin-and-spring-boot/ –

Trả lời

9

này Một khi bạn đã set your Android Studio to use Kotlin là khá đơn giản để thực hiện một cuộc gọi REST, và nó khá giống logic với Java.


Dưới đây là một ví dụ về một cuộc gọi REST với OkHttp:

build.gradle

dependencies { 
    //... 
    compile 'com.squareup.okhttp3:okhttp:3.8.1' 
} 

AndroidManifest.xml

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

MainActivity.kt

class MainActivity : AppCompatActivity() { 

    val client = OkHttpClient() 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 

     run("https://api.github.com/users/Evin1-/repos") 
    } 

    fun run(url: String) { 
     val request = Request.Builder() 
       .url(url) 
       .build() 

     client.newCall(request).enqueue(object : Callback { 
      override fun onFailure(call: Call, e: IOException) {} 
      override fun onResponse(call: Call, response: Response) = println(response.body()?.string()) 
     }) 
    } 
} 

Tôi tạo ra một ví dụ phức tạp hơn trong kho lưu trữ này, tôi sử dụng Dagger, RxJava, Retrofit trong MVP.

https://github.com/Evin1-/Kotlin-MVP-Dagger2-RxJava-Retrofit

+1

Cảm ơn bạn rất nhiều vì câu trả lời chi tiết. Điều này chắc chắn sẽ giúp tôi thực hiện một số tiến bộ. – Nutters

2

Retrofit là một công cụ tốt để sử dụng API trên Android. Here là một hướng dẫn tôi tìm thấy trên làm thế nào để sử dụng Retrofit trên Kotlin

3

bạn có thể sử dụng Retrofit hoặc AsyncTask, ví dụ về AsyncTask:

class getData() : AsyncTask<Void, Void, String>() { 
     override fun doInBackground(vararg params: Void?): String? { 
     } 

     override fun onPreExecute() { 
      super.onPreExecute() 
     } 

     override fun onPostExecute(result: String?) { 
      super.onPostExecute(result) 
     } 
} 

cho Retrofit séc awsome tutorial

Các vấn đề liên quan