[英]Android app doesnt work without wifi connection
我有一个小型的android应用程序,它使用MySQL(通过php网站)将数据插入表中。 当我使用wifi时,一切正常,但是当我禁用wifi时,数据不存储在数据库中。 这是我用来连接到本地php文件的代码:
protected String doInBackground(Void... params) {
String url = "http://192.168.1.2:6969/android/index.php";
try {
URL address = new URL(url);
HttpURLConnection httpURLConnection = (HttpURLConnection) address.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
String postData = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(name, "UTF-8") + "&"
+ URLEncoder.encode("emailAddress", "UTF-8") + "=" + URLEncoder.encode(emailAddress, "UTF-8");
bufferedWriter.write(postData);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
String line;
while((line = bufferedReader.readLine())!=null) {
result += line;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return result;
} catch (IOException e) {
}
return null;
}
我发现问题出在行上:
OutputStream outputStream = httpURLConnection.getOutputStream();
我的应用程序到此为止。
有没有办法强制此应用程序在没有wifi连接的情况下工作?
当我在Android手机上以调试USB模式启动应用程序时,这是logcat:
E/GED: Failed to get GED Log Buf, err(0)
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
D/libc-netbsd: [getaddrinfo]: mtk netid=0; mark=0
D/libc-netbsd: getaddrinfo( app_uid:10226
D/libc-netbsd: getaddrinfo() uid prop:
D/libc-netbsd: getaddrinfo() getuid():10226
D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd: [getaddrinfo]: mtk netid=0; mark=0
D/libc-netbsd: getaddrinfo( app_uid:10226
D/libc-netbsd: getaddrinfo() uid prop:
D/libc-netbsd: getaddrinfo() getuid():10226
D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
我建议您使用一个可以为您处理所有内容的库。
像http://square.github.io/okhttp/
这是一个示例代码,它如何处理URL编码的请求:
RequestBody formBody = new FormBody.Builder()
.add("name", "name")
.add("emailAdress", "xxx@xxx.com")
.build();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
更重要的是。 您有一个192.168.xx IP地址。 这是用于专用网络,是无法通过公共互联网。 如果您知道路由器的公共IP,则可以转发到PC,但我不建议您这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.