【问题标题】:Can´t connect to Web Service from Android无法从 Android 连接到 Web 服务
【发布时间】:2013-03-29 23:10:24
【问题描述】:

我对@9​​87654322@ 和WebServices 还很陌生,目前我正在阅读有关Web 服务、SOAP 等的许多信息。

我正在尝试编写一个 Web 服务示例,它只是说 Hello,它可以在我的浏览器中运行,但在我的 Android 设备/模拟器中不起作用。我已将其 IP 设置为我的 PC ipv4 地址,并关闭了防火墙和防病毒软件。但是,如果在浏览器中我尝试连接到此 IP,它会显示 404。(我不知道这是否正常)我也在使用具有以下 URL 的本地 IIS:http://localhost/HelloAndroid

这是我的 Web 服务的代码:

namespace HelloAndroid
{
    [WebService(Namespace = "http://sample.com/")]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string SayHello()
        {
            return "Hello, Android from .NET";
        }
    }
} 

Android 活动:

public class SoapTestActivity extends Activity {
    TextView result;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        result = (TextView)findViewById(R.id.result);

        final String NAMESPACE = "http://sample.com/";
        final String METHOD_NAME = "SayHello";    
        final String SOAP_ACTION = "http://sample.com/SayHello";
        final String URL = "http://192.168.1.35/HelloAndroid/Service1.asmx";

        try {
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);            
            SoapSerializationEnvelope envelope = new      SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;
            envelope.setOutputSoapObject(request);

            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            String resultValue = response.toString();

            result.setText(resultValue);          
        }
        catch (Exception e) {
            result.setText(e.getMessage());
        }
    }
}

感谢您的宝贵时间

【问题讨论】:

  • 您好,我对 Android 模拟器的了解并不是最丰富的,但是如果在您的模拟器上您转到浏览器并执行 http://10.0.2.2/HelloAndroid(或 http://10.0.2.2/HelloAndroid/Service1.asmx),您仍然会收到 404 错误吗?
  • 并确保您阅读并理解此线程stackoverflow.com/questions/6343166/…
  • nkvu,我仍然收到该错误,我还在清单中添加了“
  • 您好,从您的模拟器上的网络浏览器访问http://10.0.2.2 怎么样?如果 IIS 已启动并正在运行,它应该会提供 IIS 欢迎页面...
  • 谢谢nvku,但这也不起作用

标签: android asp.net web-services ip


【解决方案1】:

首先,您要检查从服务器计算机上的 Internet 浏览器通过 http://192.168.1.35/HelloAndroid/Service1.asmx 对 Web 服务的直接访问。 如果没问题,请尝试更正客户端(soap 请求和响应)代码。 否则,请按照此link 首先访问服务器。 如果存在问题,请尝试以下操作: 从控制面板注册框架:

程序和功能 > 打开或关闭 Windows 功能 > 信息信息服务 > 万维网服务 > 应用程序开发功能 > 选择 ASP.NET 4.5(您使用的版本)

点击确定。

完成!

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多