1

文字列値の配列を受け入れるように設計された定義済みの Web サービスに文字列配列を渡す必要があります。ただし、soap エンベロープを作成し、array.classまたはstring.classプロパティをリクエストに設定すると、シリアル化エラーがスローされます。

上記の提案はありますか?同じことを回避するために推奨されるデータ型または方法は何ですか。

 SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);

    PropertyInfo p1 = new PropertyInfo();
    p1.setName("items");
    p1.setValue(results);
    p1.setType(String.class); // else Array.class.
    request.addProperty(p1);

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

        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
        httpTransport.debug = true;
        httpTransport.call(SOAP_ACTION, envelope);
                       // throws an error in the above.

        result = httpTransport.responseDump;
4

2 に答える 2

0

loop で次のようにパラメーター名と値を渡すだけです。

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(URL);
for (int i=0; i<itemId.length; i++){
    request.addProperty("itemID",itemId[i]);
}
ht.call(SOAP_ACTION, envelope);

request.addProperty を使用して、パラメーター名と項目値をループで渡すだけです

于 2014-02-05T12:39:37.603 に答える