我有一个问题,试图使用我自己的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中编译的,希望这不是问题。
谢谢你的时间,我希望有人有解决方案答案 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服务?
您的网络服务是否必须打开与其他服务的连接?