有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

没有wifi连接,java Android应用程序无法运行

我有一个小的安卓应用程序,它使用MySQL(通过php站点)将数据插入表中。当我使用wifi时,一切正常,但当我禁用wifi时,数据不会存储在数据库中。下面是我用来连接本地php文件的代码:

 protected String doInBackground(Void... params) {
        String url = "http://192.168.1.2:6969/安卓/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连接的情况下工作

以下是我在安卓手机上以调试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

共 (1) 个答案

  1. # 1 楼答案

    我建议你使用一个能为你处理一切的图书馆

    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。x、 x IP地址。这用于专用网络,通过公共互联网不可用。如果你知道你的路由器的公共IP,你可以转发到你的电脑,但我不会建议你这样做