Issue
I'm making an android app so that I can edit values on my server from my phone but when I try to send a get request to get the initial values I don't get any response.
I use android web view to be able to use javascript as I do not know java
It works when running it outside android (on an express server) so i suspect it has something to do with android web view
The MainActivity.java
public class MainActivity extends AppCompatActivity {
WebView WebViewWithCSS;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebViewWithCSS = (WebView)findViewById(R.id.webView);
WebSettings webSetting = WebViewWithCSS.getSettings();
webSetting.setJavaScriptEnabled(true);
WebViewWithCSS.setWebViewClient(new WebViewClient());
WebViewWithCSS.loadUrl("file:///android_asset/www/index.html");
}
private class WebViewClient extends android.webkit.WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return super.shouldOverrideUrlLoading(view, url);
}
}
}
The javascript file
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
callback(null, xhr.response);
} else {
callback(status, xhr.response);
}
};
xhr.send()
};
getJSON('http://totalytherealdeal.url/get', function(err, data) {
console.log(data)
if (err !== null) {
console.log(err)
} else {
console.log(data)
}
});
As I said it doesn't output any unexpected code in the debugger. It seems like something goes wrong when it tries xhr.send() as it doesn't run anyting afterwards inside xhr.onload or logs the data
English isn't my first language
Solution
Make sure you have permissions in your manifest:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
Also a note that for the protection of its users Android won't process an HTTP request to any server that doesn't have a valid SSL certificate.
Answered By - vasmos
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.