2016-07-18 16 views
1

Ich war noch nie zuvor mit Jsoup arbeiten, und ich habe jetzt ein Projekt, wo Jungs JSoup lib verwendet haben, und ich brauche etwas Refactoring zu tun, und die gleiche Arbeit zu machen, aber mit retrofit2 ...Konvertieren Jsoup Anfrage retrofit2

Ich steckte mit der Konvertierung Anfrage, die Bilddatei senden. Hier ist original JSoup Anfrage:

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(); 

hier ist das, was ich versuche, mit Retrofit zu tun:

@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); 
} 

aber Anfrage noch immer nicht ...

Irgendwelche Ideen, wie konvertieren diese Anforderung richtig? Vielen Dank!

Antwort

1

Sie können Ihre eigene ConverterFactory erstellen und JSOUP darin verwenden.

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); 
    } 
} 

Für weitere Informationen oder vollständiges Beispiel, können Sie auf diese link

beziehen