从Android设备访问localhost中托管的Web服务

时间:2014-05-14 14:50:00

标签: android web-services iis visual-studio-2013 asmx

我在大约10个巨大的日子里度过了可怕的时光:(我想我在互联网上阅读了所有相关主题。但到目前为止失败了。这是我的情况:

我使用c#(.asmx)编写了一个Web服务,有一个用于测试我的连接的Web方法

namespace KaziKazanPortal
{
    [WebService(Namespace = "http://tempuri.org/")]
    public class KaziKazanWebService : System.Web.Services.WebService
    {
        [WebMethod]
        public string SayHello()
        {
            return "HELLO MAN!";
        }
    }
}

然后我有一个Android应用程序在eclipse编码,你猜。我正在使用kso​​ap2.jar库来处理soap操作。我通过创建一个名为“SoapComHandler”的类和一个名为“CommunicateService()”的方法来分离发送和请求soap对象。这是我的android代码:

public class SoapComHandler {
private static final String NAMESPACE = "http://tempuri.org/";
private static final String MAIN_REQUEST_URL = "http://10.0.2.2:18446/KaziKazanWebService.asmx?WSDL";
private static final String SOAP_ACTION = "http://tempuri.org/SayHello";
private static String METHOD_NAME1 = "SayHello";
String retval = "";
public String CommunicateService() {
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    try {
        HttpTransportSE androidHttpTransport = new HttpTransportSE(
                MAIN_REQUEST_URL, 100000);
        androidHttpTransport.call(SOAP_ACTION, envelope);
        Object result = (Object) envelope.getResponse();
        if (result != null) {
            retval = result.toString();
        } else {
            retval = "null";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return retval;
}
}

我还禁用了Windows防火墙。我从visual studio 2013服务运行服务运行正常。我已经从usb插上了手机。我的笔记本电脑和手机都通过无线连接到同一无线调制解调器。然后我尝试连接模拟器和实际设备的网址"http://10.0.2.2",我面对着 enter image description here

我觉得这很正常:我访问iis服务器... 但 当我调试代码时,行为“androidHttpTransport.call(SOAP_ACTION,envelope);” 抛出错误 “org.ksoap2.transport.HttpResponseException:HTTP请求失败,HTTP状态:400” 我该怎么做才能解决这个问题?

0 个答案:

没有答案