Web服务无法打开连接外部servidor

时间:2013-06-06 20:28:14

标签: android web-services wsdl tomcat7 ksoap2

我有一个问题,试图使用我自己的web服务,我只是在AWS服务器上传(来自我正在开发的Android终端应用程序)。 我使用tomcat7和msql配置了servidor,数据库正在运行,我在其中部署了我的webservice的战争。

当我在我的tomcat localhost中使用webservice工作正常...但是如果我尝试将来自localhost的url更改为来自AWS的新弹性IP它会粉碎

我不知道为什么不工作...也许是我在迁移中忘记的一些小问题。

这是跟踪问题

06-06 22:06:02.350: W/System.err(9623): SoapFault - faultcode: 'soapenv:Server' faultstring: 'Cannot open connection' faultactor: 'null' detail: org.kxml2.kdom.Node@40572d80
06-06 22:06:02.360: W/System.err(9623):     at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:136) 
06-06 22:06:02.360: W/System.err(9623):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
06-06 22:06:02.360: W/System.err(9623):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:96)
06-06 22:06:02.360: W/System.err(9623):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:189)
06-06 22:06:02.360: W/System.err(9623):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
06-06 22:06:02.360: W/System.err(9623):     at es.proyecto.gestorincidencias.util.Conexiones.comprobar_usuario(Conexiones.java:55)
06-06 22:06:02.360: W/System.err(9623):     at es.proyecto.gestorincidencias.MainActivity$1.run(MainActivity.java:51)

这是我的webservice wsdl url

http://50.16.208.44:8080/Service_Incidencia/services/Ejemplo?wsdl

这是我的代码

public class Conexiones {
private static final String NAMESPACE = "http://ws.apache.org/axis2";
private static String URL="http://50.16.208.44:8080/Service_Incidencia/services/Ejemplo?wsdl";  
private static final String METHOD_NAME3 = "comprobar_usuario";
private static final String SOAP_ACTION3 = "http://ws.apache.org/axis2/comprobar_usuario";

public static String comprobar_usuario(String email, String password) {
    String result = null;

    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME3); 
        request.addPropertyIfValue("email", email);
        request.addPropertyIfValue("password", password);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);

        HttpTransportSE ht = new HttpTransportSE(URL);
        ht.call(SOAP_ACTION3, envelope);
        final  SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
        result = response.toString();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return result;
}
}

也许重要的是要知道我在java 1.6中编译了war以在servidor中部署,在我自己的localhost中编译war是在java 1.7中编译的,希望这不是问题。

谢谢你的时间,我希望有人有解决方案

1 个答案:

答案 0 :(得分:0)

我不知道这是否有帮助,但通过查看堆栈跟踪和ksoap2-android 2.5.8的源代码,以下代码抛出异常:

public void parseBody(XmlPullParser parser) throws IOException, XmlPullParserException
{
    bodyIn = null;
    parser.nextTag();
    if (parser.getEventType() == XmlPullParser.START_TAG && parser.getNamespace().equals(env)
            && parser.getName().equals("Fault"))
    {
        SoapFault fault;
        if (this.version < SoapEnvelope.VER12) {
            fault = new SoapFault(this.version);

对我而言,您的AWS上的Web服务似乎正在返回Fault响应,说明Cannot open connection。您是否可以直接在AWS上测试您的Web服务?

您的网络服务是否必须打开与其他服务的连接?