小编raf*_*kob的帖子

Swagger模拟服务器

我在Swagger文件中有一个API参考.我想创建一个非常简单的模拟服务器,以便在我调用时:

mymockurl.com/users 它将返回一个预定义的json(无需连接到数据库).

最简单的方法是什么?我不是后躯.

swagger swagger-ui swagger-2.0

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

LinkedHashSet - 插入顺序和重复 - 保持最新"在顶部"

我需要一个保持插入顺序并具有唯一值的集合.LinkedHashSet看起来像是要走的路,但是有一个问题 - 当两个项相等时,它会移除最新的一个(这是有意义的),这是一个例子:

set.add("one");
set.add("two");
set.add("three");
set.add("two");
Run Code Online (Sandbox Code Playgroud)

LinkedHashSet会打印:

one,two,three

但我需要的是:

one,three,two

这里最好的解决方案是什么?是否有任何可以执行此操作的集合/集合方法,还是应该手动实现它?

java list linkedhashset

33
推荐指数
3
解决办法
9854
查看次数

Jetpack Compose - 可滚动列和夹到填充

我有一个带有可滚动垂直列的简单屏幕。它包含一些文本和图像。

 Column(
   modifier = Modifier
     .fillMaxWidth()
     .padding(16.dp)
     .verticalScroll(rememberScrollState()),
 ) {
      ...
   }
Run Code Online (Sandbox Code Playgroud)

内容是可滚动的,但它会剪切到定义的填充。这意味着当您滚动时,您可以看到过度滚动阴影不会填充整个屏幕,但它会绑定到填充。看起来真的很糟糕:

在此输入图像描述

在 XML 世界中,您可以用来android:clipToPadding="false"“填充”容器。Compose 中有类似的东西吗?

android-jetpack-compose

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

Dagger 2 - 构造函数注入 - 范围

我正在使用具有简单MVP模式的Dagger 2.我有一个@PerApp@PerActivity范围.我正在使用构造函数注入注入演示者依赖项,这使得这些演示者"可注入"(我不需要在活动模块中编写提供方法).代码片段:

PerApp:

// AppComponent
@PerApp
@Component(modules = {AppModule.class, DataModule.class, NetworkModule.class})
public interface AppComponent {
    LoginComponent plus(LoginModule loginModule);

    MainComponent plus(MainModule mainModule);
}

// Example @PerApp module
@Module
public class NetworkModule {

    @Provides
    @PerApp
    Retrofit providesRetrofit(){
         ...
    }
}
Run Code Online (Sandbox Code Playgroud)

PerActivity:

// LoginModule
@Module
public class LoginModule {
    private final LoginActivity mLoginActivity;

    public LoginModule(LoginActivity loginActivity) {
        mLoginActivity = loginActivity;
    }

    @Provides
    @PerActivity
    Context providesContext() {
        return mLoginActivity;
    }
}

// LoginComponent
@PerActivity
@Subcomponent(
        modules = LoginModule.class
)
public …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

7
推荐指数
2
解决办法
1806
查看次数

Okhttp - Multipart - 如何禁用部件的Content-Length?

Okhttp会自动Content-Length为请求构建中的每个部分添加标头MultipartBody.Builder.我需要删除该标头,因为我正在使用的API不允许它(我不能对它做任何事情).

我试图在请求中添加拦截器(两者addInterceptoraddNetworkInterceptor)以删除不需要的标头.但它不存在(我只能看到Content-Disposition).我调试了他们的源代码,事实证明,这Content-Length是在拦截事件之后添加的.

你知道如何解决这个问题吗?我想到的唯一事情是手动构建该请求.我必须编写一个拦截器,multipart为请求添加头,并根据提供的部分(带边界,字节流等)生成请求体.

编辑:

解决方法:https: //github.com/square/okhttp/issues/2604

java android retrofit okhttp

6
推荐指数
0
解决办法
1139
查看次数

INSERT INTO查询中的多个SELECT

我需要一个查询,它将从Tab中对数据进行排序并将其放入NewTab,如下所示:

我正在使用SQL Server 2008 R2 Express,我尝试过代码:

INSERT INTO NewTab(Var1,Var2,Var3,DTime) VALUES (
    (SELECT Value FROM Tab WHERE VarName='Var1'),
    (SELECT Value FROM Tab WHERE VarName='Var2'),
    (SELECT Value FROM Tab WHERE VarName='Var3'),
    (SELECT DTime FROM Tab WHERE VarName='Var1')
    )
Run Code Online (Sandbox Code Playgroud)

但服务器正在返回并出错:

子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.

我对SQL很陌生,如果有人帮助我,我将不胜感激.

sql sql-server select

5
推荐指数
1
解决办法
552
查看次数

RxJava - 按顺序上传文件 - 当onNext调用时,发出下一个项目

我有一种方法可以将多个文件同时上传到云存储.它看起来像这样:

List<String> files = Arrays.asList("file0", "file1", "file2");

Observable.from(files)
        .flatMap(file -> uploadFile(file)
                .flatMap(done -> notifyFinished(file)))
        .subscribe(this::onNext, this::onError, this::onCompleted);


private Observable<Boolean> uploadFile(String file) {
    Timber.d("Uploading: " + file);
    return Observable.just(true).delay(6, TimeUnit.SECONDS);
}

private Observable<Boolean> notifyFinished(String file) {
    Timber.d("Notify finished: " + file);
    return Observable.just(true).delay(3, TimeUnit.SECONDS);
}
Run Code Online (Sandbox Code Playgroud)

这个输出是:

06-09 02:10:04.779 D: Uploading: file0
06-09 02:10:04.780 D: Uploading: file1
06-09 02:10:04.781 D: Uploading: file2
06-09 02:10:10.782 D: Notify finished: file1
06-09 02:10:10.782 D: Notify finished: file0
06-09 02:10:10.783 D: Notify finished: file2
06-09 02:10:13.784 …
Run Code Online (Sandbox Code Playgroud)

java multithreading android reactive-programming rx-java

5
推荐指数
1
解决办法
1049
查看次数

改造 - OkHttp 3 - 分段上传进度

是否可以使用 Retrofit 2 和 OkHttp 3获得上传文件的实际进度?

我正在测试这个解决方案:https : //stackoverflow.com/a/36260692/1885562 但它没有像你预期的那样工作。几十毫秒后,我获得了 100% 的进度,但上传应该需要 10 秒以上(1Mbit 连接上的 3MB 文件)。我猜在实际的 HTTP 调用之前有某种缓冲区。

如何解决这个问题?

android file-upload retrofit okhttp retrofit2

5
推荐指数
0
解决办法
570
查看次数

Firebase A/B 测试 - 不同设备上的相同用户 ID

Firebase A/B 测试是否考虑了由 设置的用户 ID FirebaseAnalytics.setUserId?这是我的用例:

  1. John Doe 打开应用程序
  2. 他登录
  3. FirebaseAnalytics.setUserId 被称为 johnDoeUserId
  4. 获取远程配置值 ->他登陆VariantA
  5. John Doe 在其他设备(同一 Google 帐户)上打开应用
  6. 他登录
  7. FirebaseAnalytics.setUserId 被称为 johnDoeUserId
  8. 获取远程配置值 ->是否保证他会登陆VariantA

userId具有A / B测试什么意义?

android firebase firebase-remote-config firebase-ab-testing

5
推荐指数
1
解决办法
347
查看次数

Retrofit 2 RxJava - Gson - "全局"反序列化,更改响应类型

我正在使用一个始终返回如下所示的JSON对象的API:

public class ApiResponse<T> {
    public boolean success;
    public T data;
}
Run Code Online (Sandbox Code Playgroud)

data field是一个JSON对象,包含所有有价值的信息.当然,对于不同的请求,它们是不同的.所以我的改造界面如下所示:

@GET(...)
Observable<ApiResponse<User>> getUser();
Run Code Online (Sandbox Code Playgroud)

当我想处理响应时我需要做的事如:

response.getData().getUserId();
Run Code Online (Sandbox Code Playgroud)

我真的不需要那个布尔成功字段,我想省略它,所以我的改装界面可能如下所示:

@GET(...)
Observable<User> getUser();
Run Code Online (Sandbox Code Playgroud)

在Gson可以这样做吗?或者可能是一个整洁的Rx功能,它会自动转换它?

编辑:示例json:

{
  "success": true,
  "data": {
    "id": 22,
    "firstname": "Jon",
    "lastname": "Snow"
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑2:我已经通过改装拦截器来手动修改响应体.它有效,但如果您有任何其他建议,请发布它们:)

android json gson rx-java retrofit

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