0

我正在尝试制作一个简单的 Java 程序来上传一堆我必须要 imgur 的图像。但是我一个接一个地遇到问题,不能让 okhttp 正常工作。在这一点上,我试图解决这个问题所花费的时间比我编写程序本身所花费的时间要长得多。我对这种东西很陌生,所以请耐心等待。

所以,现在我有本教程中的以下代码:

RequestBody requestBody = new MultipartBody.Builder()
                .addFormDataPart("new", "This is my new TODO")
                .addFormDataPart("image", "attachment.png",
                        RequestBody.create(new File(""), MediaType.parse("image/png"))
                )
                .setType(MultipartBody.FORM)
                .build();

这在 RequestBody.create() 部分给出错误:

The type okio.ByteString cannot be resolved. It is indirectly referenced from required .class files

当谷歌搜索这个错误时,我发现这个页面说我错过了 okio 库。我认为这将包含在 okhttp jar 中。我还是下载了 okio jar 并将其添加到我的项目中,但错误并没有改变。我不知道还有什么问题。

4

1 回答 1

1

好的,我发现了你的问题。

Okio上面的源代码3.0.0-Alpha-10已经用Kotlin.

您的代码需要 ByteString.class,为此您需要一个 Java .class。

使用这个版本https://repo1.maven.org/maven2/com/squareup/okio/okio/3.0.0-alpha.9/ 这是在迁移到 Kotlin 之前用 Java 编写的。

下面的代码将编译:

package example;

import java.io.File;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;


public class OkHttpExample {

    public void example() {
        
        RequestBody requestBody = new MultipartBody.Builder()
                .addFormDataPart("new", "This is my new TODO")
                .addFormDataPart("image", "attachment.png",
                        RequestBody.create(new File(""), MediaType.parse("image/png"))
                )
                .setType(MultipartBody.FORM)
                .build();
    }
    
}

查看构建路径依赖项:

在此处输入图像描述

进入构建路径后,您可以在 eclipse 中打开 jar 文件,并查看内容: ByteString.class 包括在内:

在此处输入图像描述

于 2021-11-16T21:57:07.037 回答