相关疑难解决方法(0)

(Retrofit)找不到类崩溃应用程序的转换器

所以Retrofit 2.0.0最近发布了,并没有真正的任何更新示例如何使用它,但我试图实现它的基本API调用.我得到了一个

java.lang.IllegalArgumentException: Unable to create converter for class` 
Run Code Online (Sandbox Code Playgroud)

引起的

Caused by: java.lang.IllegalArgumentException: Could not locate converter for class orbyt.app.dataclass. Tried:
* retrofit.OkHttpBodyConverterFactory
Run Code Online (Sandbox Code Playgroud)

在尝试进行api调用时.

java android retrofit

77
推荐指数
4
解决办法
3万
查看次数

Retrofit 2.0-beta-2正在为MultiPart值添加文字引号

我们升级到Retrofit 2.0并遇到了这个奇怪的问题.

我有一个方法来记录用户

public interface ApiInterface {

    @Multipart
    @POST("user/login/")
    Call<SessionToken> userLogin(@Part("username") String username, @Part("password") String password);
}
Run Code Online (Sandbox Code Playgroud)

当我查看服务器端的键值POST params时,它们就像这样打印

username : "brian"
password : "password"
Run Code Online (Sandbox Code Playgroud)

使用改造1.9的相同方法K:V对看起来像

username : brian
password : password
Run Code Online (Sandbox Code Playgroud)

它正在为POST变量添加文字引号

如果我使用任何其他休息客户端,变量打印就像没有引号的第二种方式.

以下是我使用拦截器构建Retrofit实例的方法

 OkHttpClient client = new OkHttpClient();
    client.interceptors().add(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request original = chain.request();

            // Customize the request
            Request request = original.newBuilder()
                    .header("Accept", "application/json")
                    .header("Authorization", myPrefs.accessToken().getOr(""))
                    .method(original.method(), original.body())
                    .build();

            Response response = chain.proceed(request);

            // Customize or return the response …
Run Code Online (Sandbox Code Playgroud)

httpclient androidhttpclient retrofit okhttp

25
推荐指数
3
解决办法
4611
查看次数

Retrofit - Multipart请求:必需的MultipartFile参数'file'不存在

我正在尝试使用Retrofit2在服务器上发送文件.我根据文档做了一切,但总是得到400服务器错误.

我试图这样做:

RequestBody body =
                RequestBody.create(MediaType.parse("image/png"), photo);
    //..........

    @Multipart
    @POST(ADD_PHOTO)
    Observable<HPSPhotoResponse>
    addPhoto(@Part("file") RequestBody file);
Run Code Online (Sandbox Code Playgroud)

......并且像这样:

MultipartBody.Part part = MultipartBody.Part.createFormData("file", "file", body);
     //...........

    @Multipart
    @POST(ADD_PHOTO)
    Observable<HPSPhotoResponse>
    addPhoto(@Part("file") MultipartBody.Part files);
Run Code Online (Sandbox Code Playgroud)

无所谓 结果始终相同"多部分请求:不存在所需的MultipartFile参数'文件'" - 服务器响应.

我认为服务器上的Spring工作不好,但是我在Swift(iOS)上做了相同的代码而且它有效!这里服务器看到这个'文件'部分.

Alamofire.upload(method, endpoint, headers: headers,
            multipartFormData: { multipartFormData in
                multipartFormData.appendBodyPart(fileURL: self.filePath!, name: "file")
            }
Run Code Online (Sandbox Code Playgroud)

现在我希望它可以在Android上使用Retrofit.但我甚至查看了Retrofit请求的日志,实际上我在日志中看不到任何"文件"文本.

这有什么问题?

android multipartform-data multipart retrofit retrofit2

23
推荐指数
1
解决办法
3万
查看次数