【问题标题】:connection to servlet from android从android连接到servlet
【发布时间】:2016-02-08 13:31:19
【问题描述】:

我想将我的 android 应用程序连接到 servlet 。我有这个错误:

org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.3:8081 refused
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:241)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:172)
 at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:130)

在 AndroidManifest.xml 我添加了两个权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

我可以从我的浏览器访问http://192.168.1.3:8081/Android/Login,它工作正常。但是,如果我在真正的 android 设备上做同样的事情,我会得到“coonection time out”。 我已经停用了我的防火墙,但还是同样的问题。

我的代码:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (android.os.Build.VERSION.SDK_INT > 9)
    {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    setContentView(R.layout.login);
    bLogin=(Button) findViewById(R.id.loginB);
    bLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            StringBuilder reponseHttp=new StringBuilder();
            HttpClient client=new DefaultHttpClient();
            String from="aaa",to="bbb";
            try {
                HttpGet httpGet =new HttpGet("http://192.168.1.3:8081/Android/Login?from="+from+"&to="+to);
                HttpResponse response=client.execute(httpGet); 
                //rest of code
            }catch (Exception e){
                e.printStackTrace();}
        }
    });
}

【问题讨论】:

  • 您是否尝试过避免在主线程上使用 asynctask 之类的连接?
  • 不,我是从主线程连接的,我应该使用必要的异步任务吗?
  • 这是推荐的方法,请从您的 Logcat 中显示更多
  • 在你的代码上你有一个错误的 ip 198.168.1.3(198,应该是 192),我相信你只是输入错误,它也失败了 192。首先,尝试从安卓设备上的浏览器进行连接。如果不能,请检查您的 android IP 地址,看看它是否在同一网络中。
  • @avjr ,我无法从设备的浏览器连接。我正在使用 USB 连接手机,如何获取 IP?

标签: java android servlets


【解决方案1】:

连接到服务器进程需要一些时间。现在,Android 要求我们使用 Asynctask 类并覆盖 doInBackground() 和 onPostExecute() 方法。 此外, HttpClient 现在已弃用,因此我们将使用 UrlConnection 。 希望这篇文章对未来的访问者有所帮助...

【讨论】:

    猜你喜欢
    • 2012-07-28
    • 2011-08-12
    • 2011-12-27
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2013-09-07
    相关资源
    最近更新 更多