我有一个Android活动,而且我有一个按钮,该按钮需要访问一些Javascript功能。只需我的应用程序获取用户信息(ID,传递)然后转到网页(此操作使用asynctask类执行backgrun)将这两个信息写为ID并传递然后用户单击我的应用程序按钮中的登录按钮必须使用一些js功能
Private Function searchCells(ifc)
Dim ss As Integer
Dim fc As Range
Dim ssMax As Integer
Dim ssMin As Integer
ss = lstboxChannelList.List(ifc, 1)
ssMax = ss + lstboxChannelList.List(ifc, 2)
ssMin = ss - lstboxChannelList.List(ifc, 2)
Set fc = Cells.Find(What:=(ssMin <= ssMax), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
fc.Select
End Function
这是功能。我需要使用
我的帖子和获取网站连接请求
POST //
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
这些代码用于放入ID并传递
获取//
URL url = new URL(params[0]); //http://login.cu.edu.tr/Login.aspx? site=https://derskayit.cu.edu.tr&ReturnUrl=%2f
connection=(HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(data);
writer.flush();
对我有任何帮助或建议我对这种情况非常困惑,我感觉非常糟糕自己感谢帮助无论如何。祝你有愉快的一天
答案 0 :(得分:0)
使用没有webView的Javascript来发出请求!
问题已经回答here in this question
javax.script包不是Android SDK的一部分。您可以在WebView中执行JavaScript,如here所述。您可以使用Rhino,如here所述。您还可以查看Scripting Layer for Android项目。
也是一个类似的question was asked here
您可以在没有WebView的情况下执行JavaScript。您可以使用AndroidJSCore。以下是如何执行此操作的快速示例:
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://your_website_here/file.js");
HttpResponse response = client.execute(request);
String js = EntityUtils.toString(response.getEntity());
JSContext context = new JSContext();
context.evaluateScript(js);
context.evaluateScript("question.vote(0);");
然而,这很可能不会在WebView之外工作,因为我认为你不仅依赖于JavaScript,而且还依赖于AJAX,它不是纯JavaScript的一部分。它需要一个浏览器实现。
您是否有理由不使用隐藏的WebView并只是注入代码?
// Create a WebView and load a page that includes your JS file
webView.evaluateJavascript("question.vote(0);", null);
否则:
是的,您可以在不使用POST
的情况下发出HTTP GET
和HTTP WebView
请求。但是,如果您想使用webView
,请记住默认情况下webview
中的Javascript被禁用(出于安全目的)。因此,在调用任何javascript函数之前,请确保在webview
中启用javascript,如此
webView.getSettings().setJavaScriptEnabled( true );
然后在您的webView中启用javascript。
但是如果你不想使用webview和javascript来发出http请求。您可以在xml的活动布局中定义Button
的替代方法。并在按钮Clicked listener上响应http请求!
另外请记住,使用Android / Java默认类创建http请求是一项艰巨的任务,并且容易出错,并且需要您关注使用异步任务以避免阻止UI线程。
替代地
在android中我们使用现成的库来发出http请求。 Google有一个名为Volley
的好图书馆。它很容易定制,响应错误并自动从主线程发出请求。See more explanation here!。如果下面还有一些问题评论!