Skip to content

Commit 960f065

Browse files
committed
修复asarray无效的问题
1 parent d38c0f0 commit 960f065

File tree

4 files changed

+88
-2
lines changed

4 files changed

+88
-2
lines changed

app/src/main/java/com/egeio/network/MainActivity.java

+22
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55

66
import net.engine.NetEngine;
77
import net.engine.NetParams;
8+
import net.engine.request.NetRequestArray;
9+
10+
import java.util.List;
811

912
import io.reactivex.Observer;
1013
import io.reactivex.android.schedulers.AndroidSchedulers;
1114
import io.reactivex.disposables.Disposable;
15+
import io.reactivex.functions.Consumer;
1216
import io.reactivex.schedulers.Schedulers;
1317

1418
public class MainActivity extends AppCompatActivity {
@@ -24,6 +28,7 @@ protected void onCreate(Bundle savedInstanceState) {
2428
.api("")
2529
.get()
2630
.result(String.class)
31+
.asArray()
2732
.build())
2833
.observable()
2934
.subscribeOn(Schedulers.io())
@@ -47,6 +52,23 @@ public void onError(Throwable e) {
4752
@Override
4853
public void onComplete() {
4954

55+
}
56+
});
57+
NetRequestArray<String> stringNetRequestArray = NetEngine.request(
58+
NetParams.builder()
59+
.baseUrl("http://www.baidu.com")
60+
.noVersion()
61+
.api("")
62+
.get()
63+
.result(String.class)
64+
.build())
65+
.asArray();
66+
stringNetRequestArray
67+
.observable()
68+
.subscribe(new Consumer<List<String>>() {
69+
@Override
70+
public void accept(List<String> strings) throws Exception {
71+
5072
}
5173
});
5274
}

library/src/main/java/net/engine/NetParams.java

+38
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.util.HashMap;
88
import java.util.HashSet;
9+
import java.util.List;
910
import java.util.Map;
1011
import java.util.Set;
1112

@@ -140,6 +141,21 @@ public ResultBuilder(NetParams<T> params, Class<T> tClass) {
140141
params.result(tClass);
141142
}
142143

144+
public ArrayResultBuilder<T> asArray() {
145+
return new ArrayResultBuilder<>(params);
146+
}
147+
148+
public NetParams<T> build() {
149+
return params;
150+
}
151+
}
152+
153+
public static class ArrayResultBuilder<T> extends Builder {
154+
155+
public ArrayResultBuilder(NetParams params) {
156+
super(params);
157+
}
158+
143159
public NetParams<T> build() {
144160
return params;
145161
}
@@ -205,6 +221,22 @@ public ResultBuilder(NetParams<T> params, Class<T> tClass) {
205221
params.result(tClass);
206222
}
207223

224+
225+
public ArrayResultBuilder<T> asArray() {
226+
return new ArrayResultBuilder<>(params);
227+
}
228+
229+
public NetParams<T> build() {
230+
return params;
231+
}
232+
}
233+
234+
public static class ArrayResultBuilder<T> extends Builder {
235+
236+
public ArrayResultBuilder(NetParams params) {
237+
super(params);
238+
}
239+
208240
public NetParams<T> build() {
209241
return params;
210242
}
@@ -220,6 +252,7 @@ public NetParams<T> build() {
220252
private Integer apiVersion = 1;
221253
private Class<T> resultType;
222254
private Method method = Method.GET;
255+
private boolean asArray = false;
223256

224257
public String getApiUrl() {
225258
StringBuilder builder = new StringBuilder(getBaseUrl());
@@ -300,6 +333,11 @@ protected NetParams<T> result(Class<T> tClass) {
300333
return this;
301334
}
302335

336+
protected NetParams<T> asArray(boolean asArray) {
337+
this.asArray = asArray;
338+
return this;
339+
}
340+
303341
public String getBaseUrl() {
304342
if (!TextUtils.isEmpty(baseUrl)) {
305343
return baseUrl;

library/src/main/java/net/engine/request/NetRequest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public NetRequest<T> json(JSONConvert jsonConvert) {
3939
return this;
4040
}
4141

42-
public NetRequestArray<List<T>> asArray() {
43-
NetRequestArray<List<T>> requestArray = new NetRequestArray<>(target);
42+
public NetRequestArray<T> asArray() {
43+
NetRequestArray<T> requestArray = new NetRequestArray<>(target);
4444
if (jsonConvert != null) {
4545
requestArray.json(jsonConvert);
4646
}

library/src/main/java/net/engine/request/NetRequestArray.java

+26
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88

99
import java.util.List;
1010

11+
import io.reactivex.Observable;
12+
import io.reactivex.ObservableEmitter;
13+
import io.reactivex.ObservableOnSubscribe;
14+
import io.reactivex.schedulers.Schedulers;
15+
1116
/**
1217
* Created by wangjinpeng on 2017/4/6.
1318
*/
@@ -29,4 +34,25 @@ protected List<T> formatResult(String result) {
2934
//noinspection unchecked
3035
return (List<T>) jsonConvertTmp.parseArray(result, target.getResultClass());
3136
}
37+
38+
@Override
39+
public Observable<List<T>> observable() {
40+
return Observable.create(new ObservableOnSubscribe<List<T>>() {
41+
@Override
42+
public void subscribe(ObservableEmitter<List<T>> emitter) {
43+
try {
44+
List<T> result = execute();
45+
emitter.onNext(result);
46+
} catch (Throwable e) {
47+
if (e instanceof Exception) {
48+
emitter.onError(e);
49+
} else {
50+
emitter.onError(new Exception(e));
51+
}
52+
} finally {
53+
emitter.onComplete();
54+
}
55+
}
56+
}).subscribeOn(Schedulers.from(NetEngine.getExecutor()));
57+
}
3258
}

0 commit comments

Comments
 (0)