Android 将Jsoup请求转换为2
我以前从未使用过Jsoup,现在我有一个项目,大家都在使用Jsoup lib,我需要做一些重构,做同样的工作,但改型2 我坚持转换发送图像文件的请求。以下是原始JSoup请求: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)
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(内容);
}
}
有关更多信息或完整示例,您可以参考此