Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓没有';如果我使用移动数据而不是wifi,则无法正常工作_Java_Android_Android Wifi_Android Permissions - Fatal编程技术网

Java 安卓没有';如果我使用移动数据而不是wifi,则无法正常工作

Java 安卓没有';如果我使用移动数据而不是wifi,则无法正常工作,java,android,android-wifi,android-permissions,Java,Android,Android Wifi,Android Permissions,当我启动android应用程序,尝试使用WiFi数据进行登录时,一切正常。 但是,如果我再次启动应用程序,并尝试使用移动数据启动同一进程,该进程仍在等待,直到出现错误 代码是: class AsyncLogin extends AsyncTask< String, String, String > { String username, password; protected void onPreExecute() { pDialog = new Pr

当我启动android应用程序,尝试使用WiFi数据进行登录时,一切正常。 但是,如果我再次启动应用程序,并尝试使用移动数据启动同一进程,该进程仍在等待,直到出现错误

代码是:

class AsyncLogin extends AsyncTask< String, String, String > {
    String username, password;

    protected void onPreExecute() {
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Login...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    protected String doInBackground(String... params) {
        username = params[0];
        password = params[1];

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost post = new HttpPost(URI_login);
        post.setHeader("content-type", "application/json");

        try {
            JSONObject jpost = new JSONObject();
            jpost.put("password", password);
            jpost.put("username", username);

            StringEntity entity = new StringEntity(jpost.toString(),"UTF-8"); 
            entity.setContentEncoding("UTF-8");
            entity.setContentType("application/json");

            post.setEntity(entity);
            HttpResponse resp = httpClient.execute(post);
            resultado = EntityUtils.toString(resp.getEntity());

            System.out.println("Nos llega: "+ resultado.toString() +"");

          **//UPDATE, I was returning null**
        } catch (JSONException e) {
            e.printStackTrace();
            return "e-json"; //
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return "e-encoding";
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            return "e-client";
        } **catch (IOException e) {   ***//Now, this is the error***
            e.printStackTrace();
            return "e-io";**
        }

        return resultado.toString();

    }
    protected void onPostExecute(String result) {
       pDialog.dismiss();
       Log.e("onPostExecute=",""+result);

       if (result.equals("ok")){
           Intent i = new Intent(MainActivity.this, HiScreen.class);
           i.putExtra("user_hi", username);
           Log.e("onPostExecute= ", "Login is correct");
           login_ok();
           startActivity(i);
       }else{
            Log.e("onPostExecute= ", result);
       }
    }
我认为,权限没有问题

问题是,我不知道这是否是由于进程或其他方面的原因。[超时错误]我在互联网上寻找,但我不知道


谢谢

192.168.*
地址属于专用网络,因此无法从Internet访问。请参阅上的文章,即所谓的16位块

当你在WiFi上时,它会工作,因为你在网络上,通过输入它,它会将它转发到路由器,路由器将提供相应的页面(注意请求如何从未真正到达互联网)。然而,当使用移动数据时,并没有路由器,只有不实现此接口的手机发射塔,您最终将尝试查找Internet上不存在的页面。加载很可能会挂起(某些东西可以识别地址,但无法提供请求的页面),直到连接超时,从而导致给定的异常


没有进一步的上下文,我无法提供任何解决方案。

显示产生错误的代码;MainActivity.java中第266行有什么内容?@Luke我已经更新了。我返回的是空值,所以我不知道是谁产生了问题。现在我知道是超时造成的。你是用模拟器还是真的设备来测试它?@DanielMendel我用的是真的设备谢谢@Luke!你有理由。我不知道我是怎么忘记的。我有以下上下文:我的应用程序尝试连接到我的web服务(也是本地的)。是否有任何选项可以尝试该应用程序处理移动数据,如在免费托管域上托管web服务,或任何类似的应用程序?当然,您只需要选择一个(例如),将您的代码上载到该应用程序,并将IP或域名放入您的应用程序中。免责声明:我与RedHat没有任何关联。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.104:8080 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183) 
        at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:374)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:575)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:498)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:476)
    at com.josvalbae.androidrest_1.MainActivity$AsyncLogin.doInBackground(MainActivity.java:196)
    at com.josvalbae.androidrest_1.MainActivity$AsyncLogin.doInBackground(MainActivity.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:288)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)
    Caused by: java.net.ConnectException: failed to connect to /192.168.1.104 (port 8080): connect failed: ETIMEDOUT (Connection timed out)
    Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)