我试图在我的应用程序中点击soap api进行登录,但是上面提到的错误,任何人都可以告诉我我哪里出错了,这是我第一次使用soap apis。 这是我的Soap代码: -
Vector<Object> args = new Vector<Object>();
Hashtable<String, Object> hashtable = new Hashtable<String, Object>();
hashtable.put("Email", "mss.siddhart28@gmail.com");
hashtable.put("Password", "siddharth");
args.add(hashtable);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.xsd = SoapSerializationEnvelope.XSD;
envelope.enc = SoapSerializationEnvelope.ENC;
(new MarshalHashtable()).register(envelope);
HttpTransportSE androidHttpTransport = new HttpTransportSE(
"http://tempuri.org/", 15000);
androidHttpTransport.debug = true;
String result = "";
try {
SoapObject request = new SoapObject("http://tempuri.org", "call");
request.addProperty("resourcePath", "User_Login");
request.addProperty("args", args);
envelope.setOutputSoapObject(request);
androidHttpTransport.call("call", envelope);
envelope.setOutputSoapObject(request);
result = envelope.getResponse().toString();
Toast.makeText(MainActivity.this, "envelope is" + envelope, Toast.LENGTH_LONG).show();
System.out.println("result signup: " + result);
} catch (EOFException e) {
e.printStackTrace();
return "restart";
}
这是我的wsdl: -
POST /w4w/w4wservice.asmx HTTP/1.1
Host: 64.31.2.58
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/User_Login"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<User_Login xmlns="http://tempuri.org/">
<Email>string</Email>
<Password>string</Password>
</User_Login>
</soap:Body>
</soap:Envelope>
非常感谢任何帮助。
由于
答案 0 :(得分:2)
最后我解决了我的问题..在这里我发布代码,以便其他人可以得到帮助。
private String SOAP_ACTION = "http://tempuri.org/User_Login";
private String METHOD_NAME = "User_Login";
private String NAMESPACE = "http://tempuri.org/";
private String URL = "http://64.31.2.58:8080/w4w/w4wservice.asmx";
&#13;
public String logIn() {
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.xsd = SoapSerializationEnvelope.XSD;
envelope.enc = SoapSerializationEnvelope.ENC;
(new MarshalHashtable()).register(envelope);
HttpTransportSE androidHttpTransport = new HttpTransportSE(
URL, 15000);
androidHttpTransport.debug = true;
String result = "";
try {
SoapObject request = new SoapObject(NAMESPACE,
METHOD_NAME);
request.addProperty("Email", Email);
request.addProperty("Password", Password);
envelope.setOutputSoapObject(request);
androidHttpTransport.call(SOAP_ACTION, envelope);
result = envelope.getResponse().toString();
System.out.println("result signup: " + result);
} catch (EOFException e) {
e.printStackTrace();
return "restart";
} catch (SoapFault e) {
e.printStackTrace();
if (e.getMessage()
.contains("Session expired. Try to re-login.")) {
return "restart";
}
return "Email Already Exists";
} catch (NullPointerException e) {
e.printStackTrace();
return "restart";
} catch (Exception e) {
e.printStackTrace();
return "";
}
System.out.println("registration result :" + result);
return result;
}
&#13;