Skip to content

Commit ea05ce7

Browse files
committed
add JsBridge with network api
1 parent cba12c2 commit ea05ce7

File tree

1 file changed

+71
-0
lines changed
  • VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/webview

1 file changed

+71
-0
lines changed

VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/webview/JsBridge.java

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import android.net.Uri;
99
import android.os.Bundle;
1010
import android.support.annotation.NonNull;
11+
import android.support.annotation.Nullable;
1112
import android.text.TextUtils;
1213
import android.webkit.JavascriptInterface;
1314

@@ -26,6 +27,12 @@
2627
import cn.com.venvy.common.bean.PlatformUserInfo;
2728
import cn.com.venvy.common.bean.WidgetInfo;
2829
import cn.com.venvy.common.exception.LoginException;
30+
import cn.com.venvy.common.http.HttpRequest;
31+
import cn.com.venvy.common.http.RequestFactory;
32+
import cn.com.venvy.common.http.base.BaseRequestConnect;
33+
import cn.com.venvy.common.http.base.IRequestHandler;
34+
import cn.com.venvy.common.http.base.IResponse;
35+
import cn.com.venvy.common.http.base.Request;
2936
import cn.com.venvy.common.interf.ICallJsFunction;
3037
import cn.com.venvy.common.interf.IMediaControlListener;
3138
import cn.com.venvy.common.interf.IPlatformLoginInterface;
@@ -38,6 +45,7 @@
3845
import cn.com.venvy.common.utils.VenvyDeviceUtil;
3946
import cn.com.venvy.common.utils.VenvyLog;
4047
import cn.com.venvy.common.utils.VenvyMD5Util;
48+
import cn.com.venvy.common.utils.VenvyMapUtil;
4149
import cn.com.venvy.common.utils.VenvyPreferenceHelper;
4250
import cn.com.venvy.common.utils.VenvyUIUtil;
4351

@@ -51,6 +59,8 @@ public class JsBridge implements VenvyObserver {
5159
protected IPlatformLoginInterface mPlatformLoginInterface;
5260
private Map<String, List<String>> jsMap = new HashMap<>();
5361
private ICallJsFunction mCallJsFunction;
62+
//网络请求类
63+
private BaseRequestConnect mBaseRequestConnect;
5464
protected Context mContext;
5565
protected String ssid = System.currentTimeMillis() + "";
5666
private WebViewCloseListener mWebViewCloseListener;
@@ -125,6 +135,67 @@ public void commonData(String jsParams) {
125135
callJsFunction(obj.toString(), jsParams);
126136
}
127137

138+
/***
139+
* 网络请求
140+
* @param jsParams
141+
*/
142+
@JavascriptInterface
143+
public void network(final String jsParams) {
144+
if (mPlatform == null) {
145+
return;
146+
}
147+
if (TextUtils.isEmpty(jsParams)) {
148+
return;
149+
}
150+
try {
151+
JSONObject jsJsonObj = new JSONObject(jsParams);
152+
String url = jsJsonObj.optString("url");
153+
String method = jsJsonObj.optString("method");
154+
Map<String, String> param = VenvyMapUtil.jsonToMap(jsJsonObj.optString("param"));
155+
if (TextUtils.isEmpty(url)) {
156+
return;
157+
}
158+
if (mBaseRequestConnect == null) {
159+
mBaseRequestConnect = RequestFactory.initConnect(mPlatform);
160+
}
161+
Request request;
162+
if (TextUtils.equals(method, "post")) {
163+
request = HttpRequest.post(url, param);
164+
} else {
165+
request = HttpRequest.get(url, param);
166+
}
167+
mBaseRequestConnect.connect(request, new IRequestHandler() {
168+
@Override
169+
public void requestFinish(Request request, IResponse response) {
170+
if (response.isSuccess()) {
171+
String result = response.getResult();
172+
callJsFunction(result, jsParams);
173+
} else {
174+
requestError(request, new Exception("http not successful"));
175+
}
176+
}
177+
178+
@Override
179+
public void requestError(Request request, @Nullable Exception e) {
180+
callJsFunction(e != null && e.getMessage() != null ? e.getMessage() : "unkown error", jsParams);
181+
}
182+
183+
@Override
184+
public void startRequest(Request request) {
185+
186+
}
187+
188+
@Override
189+
public void requestProgress(Request request, int progress) {
190+
191+
}
192+
});
193+
} catch (Exception e) {
194+
e.printStackTrace();
195+
}
196+
197+
}
198+
128199
@JavascriptInterface
129200
public void openUrl(String jsParams) {
130201
try {

0 commit comments

Comments
 (0)