Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – get String来自Retrofit版本2.0.0 beta1大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从改装版本2获得json字符串,我不需要从中获取对象.当onResponse方法调用response.body()时,请帮助获取字符串.

public void getLoginResultFromWebservice(int customerID,String user,String pass) {
    String action = "Login";
    long timeMillis = System.currentTimeMillis();
    String key = new String(Hex.encodeHex(Digestutils.md5(G.HASH_KEY + timeMillis)));
    String customerId = String.valueOf(customerID);
    String username = user;
    String password = pass;
    Retrofit retrofit = new Retrofit.builder()
            .baseUrl(G.URL_Webservice_BasE)
            .client(U.getClient())
            .build();
    Webservice webservice = retrofit.create(Webservice.class);
    Call<String> call = webservice.getLoginResult(action,key,customerId,username,password);
    call.enqueue(new CallBACk<String>() {
        @Override
        public void onResponse(Response<String> responsE) {
            U.log(" ActivityLogin : OnResponse ");
            U.log(" ActivityLogin : Result " + response.body().toString());
        }

        @Override
        public void onFailure(Throwable t) {
            U.log("ActivityLogin On Failure");
        }
    });
}

编辑:
我找到了解决方

new Retrofit.builder()
    .baseUrl(G.URL_Webservice_BasE)
    // add a converter for String
    .addConverter(String.class,new ToStringConverter()) // add this
    //.addConverterFactory(GsonConverterFactory.create()) // remove this line
    .build()
    .create(Webservice.class);

ToStringConverter.class

public final class ToStringConverter implements Converter<String> {

@Override
public String fromBody(ResponseBody body) throws IOException {
    return body.String();
}

@Override
public requestBody toBody(String value) {
    return requestBody.create(MediaType.parse("text/plain"),value);
}
}

解决方法

你可以试试

public Apiservice getBase64Strservice() {
    if (retrofit == null) {
        retrofit = new Retrofit
                .builder()
                .baseUrl(endpo@R_944_10185@
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverter(String.class,new Base64StringConverter())
                .build();
    }
    if (service == null) {
        service = retrofit.create(Apiservice.class);
    }

    return service;
}



static class Base64StringConverter implements Converter {

    @Override
    public Object fromBody(ResponseBody body) throws IOException {
        InputStream reader = null;
        try {
            reader = body.byteStream();
            ByteArrayOutputStream writer = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024 * 8];
            int size = -1;
            while ((size = reader.read(buffer)) > 0) {
                writer.write(buffer,sizE);
            }
            String result = new String(writer.toByteArray());
            return result;
        } finally {
            try {
                if (reader != null)
                    reader.close();
            } catch (IOException E) {
                e.printStackTrace();
            }
        }

    }

    @Override
    public requestBody toBody(Object value) {
        return null;
    }
}

大佬总结

以上是大佬教程为你收集整理的android – get String来自Retrofit版本2.0.0 beta1全部内容,希望文章能够帮你解决android – get String来自Retrofit版本2.0.0 beta1所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。