1

この列挙型を解析しようとしています:

public enum ResponseFormat
{
    XML,
    JSON,
    PDF,
}

wcf サービスに ksoap2 を使用します。使用してみMarshalましたが、正しいかどうかわかりません。

Formatというクラスがあります:

public class Format implements Marshal
{
public enum ResponseFormat
{
    XML,
    JSON,
    PDF,;
}

public Object readInstance(XmlPullParser xpp, String string, String string1, PropertyInfo pi)
{
    try
    {
        return ResponseFormat.valueOf(xpp.nextText());
    }
    catch(Exception e)
    {
        return null;
    }
}

public void writeInstance(XmlSerializer xs, Object o)
{
    try
    {
        xs.text(((ResponseFormat)o).name());
    }
    catch (Exception e)
    {
    }
}

public void register(SoapSerializationEnvelope sse)
{
    sse.addMapping(sse.xsd, "ResponseFormat", ResponseFormat.class, new Format());
}
}

次に、次のように wcf サービスを呼び出しました。

try
{
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("UserSessionToken", guid);
    request.addProperty("Reference", "Nicolas");
    request.addProperty("ResponseFormat", Format.ResponseFormat.JSON);
    request.addProperty("Surname", "Tyler");
    request.addProperty("Firstname", "Nicolas");
    request.addProperty("IDNumber", "1234567890123");

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.addMapping("http://schemas.datacontract.org/2004/07/SearchWorksAPI", "ResponseFormat", Format.ResponseFormat.JSON.getClass(), new Format());
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.call(SOAP_ACTION + METHOD_NAME, envelope);
    SoapObject response = (SoapObject)envelope.getResponse();

    return response.toString();
}
catch (Exception e)
{
    return null;
}

私は例外を取得しています:

There was an error reflecting type 'ResponseObjects.Person[]'.;    at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)

シリアル化に問題があるように思えます。ここで何が問題なのかについてのアイデアはありますか?

4

0 に答える 0