我在做Android连接本地WebService的功能。运行时获取不到WebService的返回结果。logcat中有这样一条信息:request time failed: java.net.SocketException: Address family not supported by protocol请教了下别人,得知是Android虚拟机连不上局域网导致的。如何让Android虚拟机连上局域网?源码:
SoapObject request = new SoapObject("http://api.tingchemap.com/", "login"); 
String url="http://192.168.100.199/index.php?m=member";
String soapAction="http://api.tingchemap.com/login";

Log.v("map","SoapObject");
Log.v("map",request.getNamespace());
    
request.addProperty("username", "[email protected]"); 
    request.addProperty("password", "samyu2011");
    SoapEnvelope envelope = new SoapEnvelope(SoapEnvelope.VER11);
    envelope.bodyOut = request;
    envelope.setOutputSoapObject(request);
    
    Log.v("map","SoapEnvelope");
    
    SoapSerializationEnvelope ht = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    HttpTransportSE tp=new HttpTransportSE(url);
    
    Log.v("map","HttpTransportSE");
    
    try {
tp.call(soapAction, envelope);
Log.v("map","call");
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();

Log.v("map","Exception:"+e1.getMessage());
}     try
    {
    SoapObject obj=(SoapObject)envelope.bodyIn;
    
    String result = obj.getProperty(0).toString(); 
    text1.setText(result);
    Log.v("map","result");
    }
    catch (Exception e) {  
     e.printStackTrace(); 
     Log.v("map","Exception:"+e.getMessage());
            }  

解决方案 »

  1.   

    是不是你的网络有  代理设置啊    System.getProperties().put("proxySet", "true");
      System.getProperties().put("proxyHost","192.168.121.32");
      System.getProperties().put("proxyPort", "8080");第一行:通知Java您要通过代理进行连接
    第二行:指定代理所在的服务器
    第三行:指定代理监听的端口 
    或者  给模拟器添加代理     按下面格式   我相信你懂的D:\SDK2.2\android-sdk-windows\tools\emulator -avd googleApi -http-proxy 10.9.1.13:3128 -scale 0.8
      

  2.   

    以上两种方法我都试过了。结果还是跟原来一样。其中在命令行给模拟器添加代理的代码输入后报错:Could notopen:googleApi.ini