尝试使用Android访问本地Web服务时连接被拒绝

时间:2012-07-23 14:13:30

标签: android web-services android-wifi

我正在创建一个使用Visual Basic 2010构建的服务器,该程序可以插入/更新/删除我使用的数据库。我创建了一个本地Web服务,用于将服务器上的数据库与Android中的数据库同步。

我使用以下Android代码:

package com.zelacroix.bukumenu;

import java.io.IOException;
import java.io.InputStream;

import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.params.*;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Sinc extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sinc);
        Toast.makeText(getApplicationContext(), getKategori(), 5).show();
    }

    public String getKategori(){
        HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 60000);
        HttpConnectionParams.setSoTimeout(httpParameters, 60000);
        HttpClient client=new DefaultHttpClient(httpParameters);
        HttpPost httpPost = new HttpPost("http://192.168.1.2:1924/TugasAkhir/Service.asmx/getKategori");
        HttpResponse response;
        String result="";
        try
        {
            response=client.execute(httpPost);
            HttpEntity entity= response.getEntity();
            DataHandler dataHandler = new DataHandler();
            if (entity!=null)
            {
                InputStream instream = entity.getContent();
                result = dataHandler.convertStreamToString(instream);
                instream.close();
            }
        } catch (ConnectTimeoutException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), e.toString(), 100).show();
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), e.toString(), 100).show();
        }
        return result;
    }


}

我收到错误: org.apache.http.conn.httphostconnectexception connection to ``http://192.168.1.2:1924..... refused

供您参考.. 当我使用模拟器并将IP地址更改为10.0.2.2时,此代码成功运行。

当我访问托管的在线Web服务时,此代码也成功运行。 仅当我将Web服务作为本地服务运行并尝试使用我的笔记本电脑的IP(192.168.1.2)使用Android设备访问它时,它才会失败。

我正在使用WIFI。

如何解决此错误?

4 个答案:

答案 0 :(得分:2)

尝试添加:

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

这有帮助吗?

答案 1 :(得分:0)

检查你的笔记本电脑ip和你的设备ip。

  

它应该在相同的子网掩码中

笔记本电脑和手机(android)设备的IP必须 192.168.X.X

答案 2 :(得分:0)

终于解决了..问题是Visual Studio 2010在设置IIS时如此复杂,然后我尝试在Visual Studio 2008上开发我的Web服务并且IIS工作正常! Android可以在不连接拒绝的情况下访问Web服务。

答案 3 :(得分:0)

遇到这个问题,但解决方案是一些熟悉的人会遇到的事情。

<uses-permission android:name="android.permission.INTERNET"/>在您的清单上。