Android 改装响应中的怪异角色

Android 改装响应中的怪异角色,android,utf-8,retrofit,Android,Utf 8,Retrofit,我的应用程序调用一个web服务,返回一个以字节为单位的文件。该文件可以是pdf或JPG。我正在使用改装。以下是我配置呼叫的方式: public static final InterfazGibMobHttp getRetrofitClientUtf(Context c){ OkHttpClient client = new OkHttpClient(); HttpLoggingInterceptor logging = new HttpLoggingInterceptor();

我的应用程序调用一个web服务,返回一个以字节为单位的文件。该文件可以是pdf或JPG。我正在使用改装。以下是我配置呼叫的方式:

public static final InterfazGibMobHttp getRetrofitClientUtf(Context c){

    OkHttpClient client = new OkHttpClient();
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    settings = c.getSharedPreferences(c.getString(R.string.sharedPreferencesName), 0);
    client.interceptors().add(new Interceptor() {

        @Override
        public com.squareup.okhttp.Response intercept(Interceptor.Chain chain) throws IOException {
            com.squareup.okhttp.Response respuesta2 = chain.proceed(chain.request());
            String respuesta=respuesta2.body().string();//Weird characters here
            //Some logging
            }

            com.squareup.okhttp.Response newResponse = respuesta2.newBuilder().body(ResponseBody.create(respuesta2.body().contentType(), respuesta.getBytes())).build();

            return newResponse;
        }
    });
    client.interceptors().add(logging);

    String url=settings.getString("urlServlet", null);
    Retrofit builder = new Retrofit.Builder()
            .baseUrl(url)
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build();

    final InterfazGibMobHttp interfaz = builder.create(MyInterface.class);
    return interfaz;
}
当应用程序收到响应时,它应该获取字节,并用它们创建一个文件,代码如下:

Call<ResponseBody> peticion=RetrofitClient.getRetrofitClientUtf(ViewPagerActivity.this).obtenerFichero(settings.getString("imei", ""),settings.getString("idCliente", ""), object);
peticion.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Response<ResponseBody> response, Retrofit retrofit) {

    if(response.isSuccess()){

        ResponseBody body=response.body();
        File dir = new File(Environment.getExternalStorageDirectory() + “/nameOfApp/“+variable+"/"+anocherVariable);


        if (!dir.exists()) {

            dir.mkdirs();
        }

        File file = new File(dir, objetoFichero.get("nombre").getAsString());

        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            fos=new FileOutputStream(file);
            fos.write(body.bytes());
            fos.flush();
            fos.getFD().sync();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    anotherVariable+=1;
}

@Override
public void onFailure(Throwable t) {

    t.printStackTrace();
}
});
Call peticion=RefughtClient.GetRefughtClientUTF(viewPagePractivity.this).obtenerFichero(settings.getString(“imei”)、settings.getString(“idCliente”)、object);
enqueue(新的回调(){
@凌驾
公共响应(响应、改装){
if(response.issucess()){
ResponseBody body=response.body();
File dir=新文件(Environment.getExternalStorageDirectory()+“/nameOfApp/”+variable+“/”+anocherVariable);
如果(!dir.exists()){
dir.mkdirs();
}
File File=新文件(dir,objetoFichero.get(“nombre”).getAsString());
试一试{
createNewFile();
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
fos=新文件输出流(文件);
fos.write(body.bytes());
fos.flush();
fos.getFD().sync();
fos.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
另一个变量+=1;
}
@凌驾
失效时的公共无效(可丢弃的t){
t、 printStackTrace();
}
});
该文件已创建,但当我尝试打开该文件时,该文件未正确创建。该文件似乎已损坏。请检查我得到的响应,在字符串“respuesta”中,我接收到一些显示为“”的字符有黑色背景,所以可能是编码问题。我如何才能正确获取我的文件…?在哪里使用编码?服务器使用UTF-8发送它,在拦截器中,我看到响应是UTF-8…我的错误在哪里

多谢各位