小编Dav*_*ung的帖子

使用Retrofit 2进行记录

我正在尝试获取请求中发送的确切JSON.这是我的代码:

OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor(){
   @Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
      Request request = chain.request();
      Log.e(String.format("\nrequest:\n%s\nheaders:\n%s",
                          request.body().toString(), request.headers()));
      com.squareup.okhttp.Response response = chain.proceed(request);
      return response;
   }
});
Retrofit retrofit = new Retrofit.Builder()
   .baseUrl(API_URL)
   .addConverterFactory(GsonConverterFactory.create())
   .client(client).build();
Run Code Online (Sandbox Code Playgroud)

但我只在日志中看到这个:

request:
com.squareup.okhttp.RequestBody$1@3ff4074d
headers:
Content-Type: application/vnd.ll.event.list+json
Run Code Online (Sandbox Code Playgroud)

我怎么做正确的记录,考虑到拆除setLog()setLogLevel()我们使用了改造1使用哪个?

java retrofit retrofit2 okhttp3

287
推荐指数
8
解决办法
14万
查看次数

一个gradle文件中的多个maven存储库

所以我的问题是如何将多个maven存储库添加到一个gradle文件中.

这不起作用:

repositories {
    mavenCentral()
    maven {
        url "http://maven.springframework.org/release"
        url "http://maven.restlet.org"
    }
}
Run Code Online (Sandbox Code Playgroud)

multiple-repositories gradle maven

274
推荐指数
2
解决办法
10万
查看次数

如何使用Retrofit-Android记录请求和响应正文?

我在Retrofit API中找不到用于记录完整请求/响应主体的相关方法.我期待在Profiler中提供一些帮助(但它只提供有关响应的元数据).我尝试在Builder中设置日志级别,但这对我没有帮助:

RestAdapter adapter = (new RestAdapter.Builder()).
                setEndpoint(baseUrl).
                setRequestInterceptor(interceptor).
                setProfiler(profiler).
                setClient(client).
                setExecutors(MyApplication.getWebServiceThreadPool()).
                setLogLevel(LogLevel.FULL).
                setLog(new RestAdapter.Log() {
                    @Override
                    public void log(String msg) {
                        Log.i(TAG, msg);
                    }
                }).
                build();
Run Code Online (Sandbox Code Playgroud)

编辑:此代码现在正在运行.我不知道它为什么不提前工作.可能是因为我正在使用一些旧版本的改造.

logging android retrofit retrofit2

117
推荐指数
5
解决办法
10万
查看次数

android数据绑定使用"&&"逻辑运算符

我试图使用Android数据绑定在xml中使用和"&&"运算符,

android:visibility="@{(bean.currentSpaceId == bean.selectedSpaceId **&&** bean.currentSpaceId > 0)? View.VISIBLE: View.GONE}"

但我得到了编译错误:

错误:任务':app:dataBindingProcessLayoutsDevDebug'的执行失败.org.xml.sax.SAXParseException; systemId:file:/Users/path/app/build/intermediates/res/merged/dev/debug/layout/fragment_space.xml; lineNumber:106; columnNumber:89; 实体名称必须紧跟实体引用中的"&".

安卓工作室中的红色高亮显示错误"未转义和未终止字符".

那我该怎么办?

编辑: 找到答案,这些角色需要转义:

'&' --> '&'

'<' --> '&lt;'

'>' --> '&gt;'
Run Code Online (Sandbox Code Playgroud)

android bindable android-databinding

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

Retrofit 2.0如何获得反序列化的错误响应.body

我正在使用Retrofit 2.0.0-beta1.

在测试中,我有一个替代方案,并期望错误HTTP 400

我想要retrofit.Response<MyError> response 但是response.body() == null

MyError没有反序列化 - 我只在这里看到它

response.errorBody().string()
Run Code Online (Sandbox Code Playgroud)

但它没有给我MyError作为对象

java retrofit retrofit2

103
推荐指数
15
解决办法
10万
查看次数

什么是NSManagedObjectContext的performBlock:用于?

在iOS 5中,NSManagedObjectContext有几种新方法,performBlock:performBlockAndWait:.实际使用的这些方法是什么?它们在旧版本中取代了什么?什么样的街区应该传递给他们?我该如何决定使用哪个?如果有人有一些使用它们的例子,那就太好了.

core-data blocking nsmanagedobjectcontext ios ios5

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

不支持的操作:Android,Retrofit,OkHttp.在OkHttpClient中添加拦截器

我试图通过使用拦截器在Android中的Retrofit 2.0-beta3和OkHttpClient添加基于令牌的身份验证.但是当我在OkHttpClient中添加拦截器时,我得到UnsupportedOperationException.这是我的代码:在ApiClient.java中

public static TrequantApiInterface getClient(final String token) {
        if( sTreqantApiInterface == null) {

            Log.v(RETROFIT_LOG, "Creating api client for the first time");
            OkHttpClient okClient = new OkHttpClient();

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

                    // Request customization: add request headers
                    Request.Builder requestBuilder = original.newBuilder()
                            .header("Authorization", token)
                            .method(original.method(), original.body());

                    Request request = requestBuilder.build();
                    return chain.proceed(request);
                }
            });

            Retrofit client = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .client(okClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            sTreqantApiInterface = client.create(TrequantApiInterface.class);
        }
        return sTreqantApiInterface;
    } …
Run Code Online (Sandbox Code Playgroud)

java android retrofit okhttp retrofit2

54
推荐指数
2
解决办法
1万
查看次数

Retrofit2 Android:预计BEGIN_ARRAY但在第1行第2列路径为BEGIN_OBJECT路径$

我知道这不是第一次有人问这个问题,但是使用Retrofit2我无法找到解决问题的正确方法.我按照在线教程进行操作,效果很好.当我将相同的代码应用到我自己的端点时,我得到了这个例外:java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $我不知道如何解决这个问题.

接口:

public interface MyApiService {

// Is this right place to add these headers?
@Headers({"application-id: MY-APPLICATION-ID",
        "secret-key: MY-SECRET-KEY",
        "application-type: REST"})
@GET("Music")
Call<List<Music>> getMusicList();



Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(MySettings.REST_END_POINT)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
}
Run Code Online (Sandbox Code Playgroud)

客户代码:

MyApiService service = MyApiService.retrofit.create(MyApiService.class);
Call<List<Music>> call = service.getMusicList();
call.enqueue(new Callback<List<Music>>() {

    @Override
    public void onResponse(Call<List<Music>> call, Response<List<Music>> response) {
        Log.e("MainActivity", response.body().
    }

    @Override
    public void onFailure(Call<List<Music>> call, Throwable t) {
        Log.e("MainActivity", t.toString()); …
Run Code Online (Sandbox Code Playgroud)

java android json retrofit retrofit2

52
推荐指数
1
解决办法
7万
查看次数

Android:保持后台服务活着(防止进程死亡)

我有一个定义为的服务:

public class SleepAccelerometerService extends Service implements SensorEventListener
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我正在制作一个应用程序,可以在用户使用他或她的手机/设备睡在床上时,出于各种原因监控加速度计活动.这是一项长期服务,不得在夜间杀死.根据夜间有多少后台应用程序和定期进程,android有时会终止我的进程,从而结束我的服务.例:

10-04 03:27:41.673: INFO/ActivityManager(1269): Process com.androsz.electricsleep (pid 16223) has died.
10-04 03:27:41.681: INFO/WindowManager(1269): WIN DEATH: Window{45509f98 com.androsz.electricsleep/com.androsz.electricsleep.ui.SleepActivity paused=false}
Run Code Online (Sandbox Code Playgroud)

我不想强迫用户将"SleepActivity"或我的应用中的其他活动作为前景.我不能定期运行我的服务,因为它会不断拦截onSensorChanged.

有小费吗?源代码在这里:http://code.google.com/p/electricsleep/

service android process alarmmanager

51
推荐指数
4
解决办法
10万
查看次数

如何使用Retrofit从异步回调中返回String或JSONObject?

例如,打电话

api.getUserName(userId, new Callback<String>() {...});
Run Code Online (Sandbox Code Playgroud)

原因:

retrofit.RetrofitError: retrofit.converter.ConversionException:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 
Expected a string but was BEGIN_OBJECT at line 1 column 2
Run Code Online (Sandbox Code Playgroud)

我想我必须禁用gson解析到POJO但无法弄清楚如何做到这一点.

android retrofit retrofit2

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