0

誰かがこれについて私を案内してもらえますか.私はAndroidでKSOAPを使用するのはまったく初めてです.以下はXMLの私の詳細です.そして、私はWebサービスで詳細を送信したい.プロパティを追加する方法を教えてください私はそこで何か間違ったことをしていますか?

<?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

たとえば、「Pin」タグが整数のみを受け入れ、char を記述するとエラーが発生する場合など、記述した String のタイプが正しくない可能性があります。

于 2013-02-19T18:56:47.650 に答える
0

以下のように、SOAP リクエストに関連する変数があることを確認します。

一般に、 と のSOAP_ACTION組み合わせにする必要がNAMESPACEあります。METHOD_NAME

SOAP_ACTION=NAMESPACE+METHOD_NAME

上記の変数のサンプル値:

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 に答える