2016-08-27 30 views
30

với OkHttp chúng ta có thể thực hiện yêu cầu HTTP sau đó nhận được phản hồi từ máy chủtại sao sử dụng Retrofit khi chúng ta có OkHttp

OkHttpClient client = new OkHttpClient(); 
Request request = new Request.Builder() 
    .url(url) 
    .build(); 
Response response = client.newCall(request).execute(); 

sau đó với Gson lib chuyển đổi đáp ứng với đối tượng chúng ta cần.

này cách Quảng trường/OkHttp doc:

của API request/response được thiết kế với các nhà xây dựng thành thạo và tính bất biến. Nó hỗ trợ tất cả các cuộc gọi đồng bộ ngăn chặn và async cuộc gọi với callbacks

tôi đọc từ stackOverFlow

Retrofit sử dụng OkHTTP tự động nếu có

.

Vì vậy, câu hỏi của tôi là chính xác những gì được trang bị thêm?

Retrofit nào có thể làm điều đó OkHttp có thể không ?!

Tôi nghĩ OkHttp và Gson giải quyết vấn đề API yêu cầu, vì vậy vấn đề Retrofit giải quyết cho chúng ta là gì?

+1

Ý kiến ​​dựa trên và có khả năng bị đóng như vậy. Thực tế của vấn đề là, cả hai tồn tại và không ai chết. Điều đó có nghĩa là cả hai đều có trường hợp sử dụng hợp lệ trong con mắt của cộng đồng nhà phát triển Android. – fge

+1

Kiểm tra bài đăng này http://stackoverflow.com/q/16902716/1144203 –

+0

@isim Tôi đã thấy liên kết này trước đây, nhưng tôi không thể hiểu tại sao cần trang bị thêm ?! và tại sao Retrofit sử dụng OkHttp! –

Trả lời

31

với OkHttp chúng ta có thể thực hiện yêu cầu HTTP sau đó nhận được phản hồi từ máy chủ ... sau đó với Gson phản ứng lib chuyển đổi cho đối tượng chúng ta cần

Lưu ý rằng trong đoạn mã của bạn, bạn bỏ qua hai bước đáng chú ý: tạo URL và phân tích cú pháp JSON bằng Gson.

Vì vậy, câu hỏi của tôi là chính xác những gì được trang bị thêm?

Đó là để tạo URL (sử dụng mã nhận dạng loại được gắn với API REST cụ thể của bạn) và phân tích cú pháp JSON bằng Gson. Nói cách khác, nó làm những gì bạn bỏ qua trong đoạn mã của bạn.

Ngoài ra, đối với một số loại hoạt động REST nhất định (ví dụ: POST), nó giúp một chút trong việc lắp ráp nội dung cần gửi (ví dụ: tạo biểu mẫu được mã hóa).

Theo định nghĩa, bạn không cần sử dụng trang bị thêm. Retrofit là mã máy tính, được viết bởi các lập trình viên máy tính. Ai đó có thể viết mã để làm những gì Retrofit làm.

tại sao sử dụng Retrofit OkHttp

Retrofit cần phải thực hiện các thao HTTP. Nó sử dụng OkHttp khi có sẵn, cho tất cả những gì mà OkHttp cung cấp: hỗ trợ HTTP/2 và SPDY, các bộ chặn đánh chặn có thể cắm được, v.v.

+4

Tôi biết OkHttp thực hiện yêu cầu HTTP hiệu quả và nhanh hơn, nhưng tôi không thể tin rằng square làm Retrofit để lập bản đồ json và tạo ra các url, vấn đề Retrofit giải quyết cho chúng ta là gì? –

+5

"nhưng tôi không thể tin rằng vuông làm cho trang bị thêm để lập bản đồ json và tạo url, vấn đề Retrofit giải quyết cho chúng ta" nếu bạn đưa vấn đề đó ligthly bạn chưa thực hiện đủ chương trình. – arg20

14

Bạn nên sử dụng thêm nếu bạn đang cố ánh xạ API máy chủ bên trong ứng dụng của bạn (loại an toàn). Retrofit chỉ là một bộ điều hợp API được bọc trên okHTTP.

Nếu bạn muốn nhập an toàn và mô đun hóa mã tương tác với API của mình, hãy sử dụng trang bị thêm. Bên cạnh đó, hiệu suất cơ bản, yêu cầu mặc định, vv của okHTTP và Retrofit là như nhau. Tôi cũng khuyên bạn nên nghe this podcast từ Jesse Wilson (nhà phát triển các ứng dụng khách HTTP lớn), nơi ông nói sâu về lịch sử phát triển ứng dụng khách HTTP HTTP, HTTPURLConnection, okHTTP và trang bị thêm.

4

Trang bị thêm là ứng dụng REST cho Android và Java bằng Square. Nó làm cho nó tương đối dễ dàng để lấy và tải lên JSON (hoặc dữ liệu có cấu trúc khác) thông qua một RESTservice dựa trên REST. Trong Retrofit, bạn cấu hình bộ chuyển đổi nào được sử dụng cho việc tuần tự hóa dữ liệu. Thông thường cho JSON, bạn sử dụng GSon, nhưng bạn có thể thêm các trình biến đổi tùy chỉnh để xử lý XML hoặc các giao thức khác. Retrofit sử dụng thư viện OkHttp cho các yêu cầu HTTP. Bạn nên sử dụng trang bị thêm trên okhttp để dễ dàng, cho các tính năng của nó.

0

Sự cố Giải quyết sự cố Giải quyết sự cố là: Mã của okhttp để nhận một đối tượng tạo thành một máy chủ từ xa là dài dòng.

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