Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将Jsoup请求转换为2_Android_Jsoup_Retrofit_Multipartform Data_Retrofit2 - Fatal编程技术网

Android 将Jsoup请求转换为2

Android 将Jsoup请求转换为2,android,jsoup,retrofit,multipartform-data,retrofit2,Android,Jsoup,Retrofit,Multipartform Data,Retrofit2,我以前从未使用过Jsoup,现在我有一个项目,大家都在使用Jsoup lib,我需要做一些重构,做同样的工作,但改型2 我坚持转换发送图像文件的请求。以下是原始JSoup请求: Connection.Response result = Jsoup.connect(apiURL + "sendImg/") .method(Connection.Method.POST)

我以前从未使用过Jsoup,现在我有一个项目,大家都在使用Jsoup lib,我需要做一些重构,做同样的工作,但改型2

我坚持转换发送图像文件的请求。以下是原始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);
}
@Multipart
@POST(“sendImg/”)
调用sendImage(@Header(“Token”)字符串Token,@Part MultipartBody.Part文件);
公共void sendImage(文件){
请求体请求文件=
create(MediaType.parse(“多部分/表单数据”),文件);
多部分主体。部分主体=
MultipartBody.Part.createFormData(“源”,
currentImage.getMD5().concat(“.jpg”),请求文件);
mSendImageCall=mServerApi.sendImage(getToken(),body);
mSendImageCall.enqueue(sendImageCallback);
}
但请求仍然失败


你知道如何正确地转换这个请求吗?谢谢

您可以创建自己的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);
    }
}
reformation-reformation=new-reformation.Builder()
.baseUrl(HttpUrl.parse(“https://www.x.x/x/"))
.addConverterFactory(PageAdapter.FACTORY)
.build();
静态最终类PageAdapter实现转换器{
静态最终转换器。工厂=新转换器。工厂(){
@凌驾
公共转换器响应BodyConverter(类型、注释[]注释、改装){
if(type==SecondClass.Page.class)返回新的SecondClass.PageAdapter();
返回null;
}
};
@凌驾
public SecondClass.Page convert(ResponseBody ResponseBody)引发IOException{
documentdocument=Jsoup.parse(responseBody.string());
元素值=文档。选择(“脚本”)。获取(1);
字符串内容=value.html();
返回新的SecondClass.Page(内容);
}
}
有关更多信息或完整示例,您可以参考此