org.xmlpull.v1.XmlPullParserException:expected:START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope

时间:2015-07-02 06:36:26

标签: android web-services soap wsdl

我试图在我的应用程序中点击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>

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

最后我解决了我的问题..在这里我发布代码,以便其他人可以得到帮助。

&#13;
&#13;
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;
&#13;
&#13;

&#13;
&#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;
&#13;
&#13;