2016-07-18 1 views
1

Я никогда не работать с Jsoup, а теперь у меня есть проект, где ребята с помощью JSoup LIB, и мне нужно сделать некоторые рефакторинга и делают ту же работу, но с retrofit2 ...Преобразовать запрос Jsoup в retrofit2

Я застрял с конвертирующим запросом, который отправляет файл изображения. Вот оригинальный запрос JSoup:

Connection.Response result = Jsoup.connect(apiURL + "sendImg/") 
           .method(Connection.Method.POST) 
           .header("Token", XCSRFToken) 
           .data("source", currentImage.getMD5().concat(".jpg"), 
             new FileInputStream(bitmapURI.getPath())) 
           .execute(); 

вот что я пытаюсь сделать с дооснащения:

@Multipart 
    @POST("sendImg/") 
    Call<CbSendImage> sendImage(@Header("Token") String token, @Part MultipartBody.Part file); 

public void sendImage(File file) { 
     RequestBody requestFile = 
       RequestBody.create(MediaType.parse("multipart/form-data"), file); 
     MultipartBody.Part body = 
     MultipartBody.Part.createFormData("source", 
         currentImage.getMD5().concat(".jpg"), requestFile); 
     mSendImageCall = mServerApi.sendImage(getToken(), body); 
     mSendImageCall.enqueue(sendImageCallback); 
} 

но запрос еще не удалось ...

Любые идеи, как преобразовать этот запрос правильно? Благодаря!

ответ

1

Вы можете создать свой собственный ConverterFactory и использовать JSOUP в нем.

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(HttpUrl.parse("https://www.x.x/x/")) 
      .addConverterFactory(PageAdapter.FACTORY) 
      .build(); 

static final class PageAdapter implements Converter<ResponseBody, SecondClass.Page> { 
    static final Converter.Factory FACTORY = new Converter.Factory() { 
     @Override 
     public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { 
      if (type == SecondClass.Page.class) return new SecondClass.PageAdapter(); 
      return null; 
     } 
    }; 

    @Override 
    public SecondClass.Page convert(ResponseBody responseBody) throws IOException { 
     Document document = Jsoup.parse(responseBody.string()); 
     Element value = document.select("script").get(1); 
     String content = value.html(); 
     return new SecondClass.Page(content); 
    } 
} 

Для получения дополнительной информации или полного примера, вы можете обратиться к этому link