คำถามติดแท็ก retrofit2

21
การบันทึกด้วยชุดติดตั้งเพิ่มเติม 2
ฉันพยายามรับ JSON ที่ถูกต้องในการส่งคำขอ นี่คือรหัสของฉัน: OkHttpClient client = new OkHttpClient(); client.interceptors().add(new Interceptor(){ @Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { Request request = chain.request(); Log.e(String.format("\nrequest:\n%s\nheaders:\n%s", request.body().toString(), request.headers())); com.squareup.okhttp.Response response = chain.proceed(request); return response; } }); Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()) .client(client).build(); แต่ฉันเห็นเฉพาะในบันทึก: request: com.squareup.okhttp.RequestBody$1@3ff4074d headers: Content-Type: application/vnd.ll.event.list+json ฉันควรจะทำการบันทึกที่เหมาะสมได้อย่างไรเมื่อทำการลบsetLog()และsetLogLevel()ที่เราเคยใช้กับ Retrofit …

10
POST Multipart Data Data โดยใช้ Retrofit 2.0 รวมถึงรูปภาพ
ฉันพยายามทำ HTTP POST ไปยังเซิร์ฟเวอร์โดยใช้Retrofit 2.0 MediaType MEDIA_TYPE_TEXT = MediaType.parse("text/plain"); MediaType MEDIA_TYPE_IMAGE = MediaType.parse("image/*"); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); imageBitmap.compress(Bitmap.CompressFormat.JPEG,90,byteArrayOutputStream); profilePictureByte = byteArrayOutputStream.toByteArray(); Call<APIResults> call = ServiceAPI.updateProfile( RequestBody.create(MEDIA_TYPE_TEXT, emailString), RequestBody.create(MEDIA_TYPE_IMAGE, profilePictureByte)); call.enqueue(); เซิร์ฟเวอร์ส่งคืนข้อผิดพลาดที่แจ้งว่าไฟล์ไม่ถูกต้อง นี่เป็นเรื่องแปลกเพราะฉันพยายามอัปโหลดไฟล์เดียวกันด้วยรูปแบบเดียวกันบน iOS (ใช้ไลบรารีอื่น) แต่อัปโหลดสำเร็จ ฉันสงสัยว่าวิธีที่เหมาะสมในการอัพโหลดภาพโดยใช้Retrofit 2.0คืออะไร ฉันควรบันทึกลงดิสก์ก่อนอัพโหลดหรือไม่ PS: ฉันได้ใช้ชุดติดตั้งเพิ่มสำหรับการร้องขอ Multipart อื่น ๆ ที่ไม่รวมภาพและพวกเขาเสร็จสมบูรณ์ ปัญหาคือเมื่อฉันพยายามที่จะรวมไบต์กับร่างกาย

21
Retrofit 2.0 วิธีรับการตอบสนองข้อผิดพลาด deserialised ร่างกาย
ฉันใช้Retrofit 2.0.0-beta1 ในการทดสอบฉันมีสถานการณ์อื่นและคาดว่าจะเกิดข้อผิดพลาด HTTP 400 ฉันอยากจะมีretrofit.Response<MyError> response แต่response.body() == null MyError ไม่ได้ถูก deserialised - ฉันเห็นที่นี่เท่านั้น response.errorBody().string() แต่มันไม่ได้ให้ MyError เป็นวัตถุ
132 java  retrofit  retrofit2 

9
จะบันทึกคำขอและเนื้อหาตอบกลับด้วย Retrofit-Android ได้อย่างไร
ฉันไม่พบวิธีการที่เกี่ยวข้องใน Retrofit API สำหรับการบันทึกเนื้อหาคำขอ / การตอบกลับที่สมบูรณ์ ฉันคาดหวังความช่วยเหลือบางอย่างใน Profiler (แต่มีเฉพาะข้อมูลเมตาเกี่ยวกับการตอบสนองเท่านั้น) ฉันพยายามตั้งค่าระดับการบันทึกใน Builder แต่ก็ไม่ได้ช่วยฉันเช่นกัน: RestAdapter adapter = (new RestAdapter.Builder()). setEndpoint(baseUrl). setRequestInterceptor(interceptor). setProfiler(profiler). setClient(client). setExecutors(MyApplication.getWebServiceThreadPool()). setLogLevel(LogLevel.FULL). setLog(new RestAdapter.Log() { @Override public void log(String msg) { Log.i(TAG, msg); } }). build(); แก้ไข: รหัสนี้ใช้งานได้แล้ว ฉันไม่รู้ว่าทำไมมันถึงไม่ทำงานก่อนหน้านี้ อาจเป็นเพราะฉันใช้ชุดติดตั้งรุ่นเก่าบางรุ่น

4
ฉันจะจัดการกับตัวตอบสนองที่ว่างเปล่าด้วย Retrofit 2 ได้อย่างไร
เมื่อเร็ว ๆ นี้ฉันเริ่มใช้ Retrofit 2 และฉันประสบปัญหาในการแยกวิเคราะห์เนื้อหาตอบสนองที่ว่างเปล่า ฉันมีเซิร์ฟเวอร์ที่ตอบสนองด้วยโค้ด http เท่านั้นโดยไม่มีเนื้อหาใด ๆ ในเนื้อหาตอบกลับ ฉันจะจัดการเฉพาะข้อมูลเมตาเกี่ยวกับการตอบสนองของเซิร์ฟเวอร์ (ส่วนหัวรหัสสถานะ ฯลฯ ) ได้อย่างไร

3
ไม่สามารถสร้าง call adapter สำหรับ io.reactivex.Observable
ฉันจะส่งเมธอด get ง่ายๆไปยังเซิร์ฟเวอร์ของฉัน (มันคือแอพ Rails) และรับผลลัพธ์โดยใช้ RxJava และ Retrofit สิ่งที่ฉันทำคือ: อินเทอร์เฟซของฉัน: public interface ApiCall { String SERVICE_ENDPOINT = "https://198.50.214.15"; @GET("/api/post") io.reactivex.Observable<Post> getPost(); } โมเดลของฉันคือ: public class Post { @SerializedName("id") private String id; @SerializedName("body") private String body; @SerializedName("title") private String title; public String getId () { return id; } public String …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.