0

有人可以指导我吗?我对在 android 中使用 KSOAP 完全陌生。以下是我在 XML 中的详细信息。我想在 webservice 中发送详细信息。请告诉我如何添加属性,我在那里做错了什么吗?

<?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>
    <CheckLoginWithIPhoneData xmlns="http://tempuri.org/">
      <UserName>string</UserName>
      <Pin>string</Pin>
      <Password>string</Password>
      <DeviceID>string</DeviceID>
    </CheckLoginWithIPhoneData>
  </soap:Body>
</soap:Envelope>

在java代码中我已经这样做了:

public void showdetails() 
    {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);

        request.addProperty("UserName","sometext");
        request.addProperty("Pin","sometext");
        request.addProperty("Password","sometext");
        request.addProperty("DeviceID","sometext");

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

        try {

            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.debug=true;
            androidHttpTransport.call(SOAP_ACTION1, envelope);
            Log.e("RESPONSE",""+androidHttpTransport.responseDump);

            SoapObject result = (SoapObject) envelope.bodyIn;
            Log.e("result",""+result);

            if (result != null)

            {
                Log.e("val", "" + result.getProperty(0).toString());
            }

            else

            {
                Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show();
            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

我已经在后台调用了该方法。

但是,当我尝试打印 RESPONSE Log.e("RESPONSE",""+androidHttpTransport.responseDump); 时出现以下错误

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring> System.Web.Services.Protocols.SoapException:服务器无法识别 HTTP 标头 SOAPAction 的值:https ://tempuri.org/CheckLoginWithIPhoneData 。

4

3 回答 3

1
        request = new SoapObject(Util.getInstance().NAMESPACE, method);

    AuthenticateRequest authenticateRequest = (AuthenticateRequest) params[0];

    SoapObject authenticate = new SoapObject(Util.getInstance().NAMESPACE, "CheckLoginWithIPhoneData");

    authenticate.addProperty("UserName", <value>);
    authenticate.addProperty("Pin", <value>);
    authenticate.addProperty("Password", <value>);
    authenticate.addProperty("DeviceID", <value>);

    PropertyInfo propertyInfo1 = new PropertyInfo();
    propertyInfo1.namespace = Util.getInstance().NAMESPACE;
    propertyInfo1.name = "CheckLoginWithIPhoneData";

    request.addProperty(propertyInfo1, authenticate);

希望这有帮助!

于 2013-02-19T13:35:29.113 回答
0

确保您具有与 SOAP 请求相关的变量,如下所示:

通常SOAP_ACTION应该是NAMESPACE和的组合METHOD_NAME

SOAP_ACTION=命名空间+方法名

以上变量的样本值:

private static final String SOAP_ACTION = "http://uri.org/GetFormData";
private static final String METHOD_NAME = "GetFormData";
private static final String NAMESPACE = "http://uri.org/";
private static final String URL = "http://inukshk.com/getformsdata/sample.asmx";

希望它会帮助你。

于 2013-02-19T13:52:31.733 回答
0

您编写的 String 类型可能不正确,例如“Pin”标签,如果它只接受整数,并且如果您编写 char,它会给您一个错误。

于 2013-02-19T18:56:47.650 回答