我在Swagger文件中有一个API参考.我想创建一个非常简单的模拟服务器,以便在我调用时:
mymockurl.com/users 它将返回一个预定义的json(无需连接到数据库).
最简单的方法是什么?我不是后躯.
我需要一个保持插入顺序并具有唯一值的集合.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
这里最好的解决方案是什么?是否有任何可以执行此操作的集合/集合方法,还是应该手动实现它?
我有一个带有可滚动垂直列的简单屏幕。它包含一些文本和图像。
Column(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
.verticalScroll(rememberScrollState()),
) {
...
}
Run Code Online (Sandbox Code Playgroud)
内容是可滚动的,但它会剪切到定义的填充。这意味着当您滚动时,您可以看到过度滚动阴影不会填充整个屏幕,但它会绑定到填充。看起来真的很糟糕:
在 XML 世界中,您可以用来android:clipToPadding="false"“填充”容器。Compose 中有类似的东西吗?
我正在使用具有简单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) Okhttp会自动Content-Length为请求构建中的每个部分添加标头MultipartBody.Builder.我需要删除该标头,因为我正在使用的API不允许它(我不能对它做任何事情).
我试图在请求中添加拦截器(两者addInterceptor和addNetworkInterceptor)以删除不需要的标头.但它不存在(我只能看到Content-Disposition).我调试了他们的源代码,事实证明,这Content-Length是在拦截事件之后添加的.
你知道如何解决这个问题吗?我想到的唯一事情是手动构建该请求.我必须编写一个拦截器,multipart为请求添加头,并根据提供的部分(带边界,字节流等)生成请求体.
编辑:
我需要一个查询,它将从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很陌生,如果有人帮助我,我将不胜感激.
我有一种方法可以将多个文件同时上传到云存储.它看起来像这样:
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) 是否可以使用 Retrofit 2 和 OkHttp 3获得上传文件的实际进度?
我正在测试这个解决方案:https : //stackoverflow.com/a/36260692/1885562 但它没有像你预期的那样工作。几十毫秒后,我获得了 100% 的进度,但上传应该需要 10 秒以上(1Mbit 连接上的 3MB 文件)。我猜在实际的 HTTP 调用之前有某种缓冲区。
如何解决这个问题?
Firebase A/B 测试是否考虑了由 设置的用户 ID FirebaseAnalytics.setUserId?这是我的用例:
John Doe 打开应用程序FirebaseAnalytics.setUserId 被称为 johnDoeUserIdVariantAJohn Doe 在其他设备(同一 Google 帐户)上打开应用FirebaseAnalytics.setUserId 被称为 johnDoeUserIdVariantA?不userId具有A / B测试什么意义?
我正在使用一个始终返回如下所示的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 ×6
java ×4
retrofit ×3
okhttp ×2
rx-java ×2
dagger-2 ×1
file-upload ×1
firebase ×1
gson ×1
json ×1
list ×1
retrofit2 ×1
select ×1
sql ×1
sql-server ×1
swagger ×1
swagger-2.0 ×1
swagger-ui ×1