1

我在尝试使用自己的网络服务时遇到问题,我只是上传到 AWS 服务器(来自我正在开发的 android 终端应用程序)。我用tomcat7和msql配置了servidor,数据库正在工作,我在其中部署了我的webservice之战。

当我在我的 tomcat localhost 中使用 web 服务时工作正常...但是如果我尝试将 url 从 localhost 更改为来自 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)

这是我的网络服务 wsdl 网址

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 中编译了战争以部署在服务器中,而在我自己的 localhost 中,战争是在 java 1.7 中编译的,希望这不是问题。

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

4

1 回答 1

0

我不知道这是否有帮助,但是通过查看您的堆栈跟踪和ksoap2-android2.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 服务?

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

于 2013-06-06T22:36:46.180 回答