0

XML プロトコルのみを使用するリモート API へのリクエストを作成する際に問題が発生しています。Apache CXF プロジェクトを使用して、WSDL ファイルをプロジェクトに簡単にインポートできるタイプ (.java ファイル) に解析しました。CXF では、デフォルトの引数 none が使用されていました。

KSOAP2 が受け取った型に従って XML をフォーマットする方法がわかりません。どんな助けでも大歓迎です。

ケビン

public class SOAPRequestTest {

    private static final String NAMESPACE = "http://schemas.xmlsoap.org/soap/envelope/"; 
    private static final String SERVER_HOST = "https://xx.xx.xx.xx/services/LoginService";
    private static final String SERVER_METHOD = "urn:LoginService";

    public void execute() {
        Logger.d("--> Hello");

        new Thread(new Runnable() {
            @Override
            public void run() {
                SoapObject request = new SoapObject(NAMESPACE, SERVER_METHOD);
                GetSecurityInfo getSecurityInfo = new GetSecurityInfo();

                SecurityLogin securityLogin = new SecurityLogin();
                securityLogin.setUserId("testUser");
                securityLogin.setPassword("password");
                securityLogin.setType("consumer");
                securityLogin.setIP("128.2.20.181");
                securityLogin.setLocale("en_US");

                getSecurityInfo.setUser(securityLogin);

                request.addAttribute("user", getSecurityInfo);

                SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(1);
                soapSerializationEnvelope.addTemplate(request);
                soapSerializationEnvelope.addMapping("http://xx.xxx.xxx.xxx", "user", GetSecurityInfo.class);

                HttpTransportSE httpTransportSE = new HttpTransportSE(SERVER_HOST);

                httpTransportSE.debug = true;

                try {
                    httpTransportSE.call("getSecurityInfo", soapSerializationEnvelope);

                    Logger.d(httpTransportSE.requestDump);

                    SoapObject soapObject = (SoapObject) soapSerializationEnvelope.getResponse();
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }).start();
    }
}
4

1 に答える 1

0

これは、次のようにしてxmlを解析できる場合に役立つ可能性があります

public ArrayList<OrderBills> getOrderBills(SoapObject result)
    {       
        ArrayList<OrderBills> list=new ArrayList<OrderBills>();

        for(int i=0;i<result.getPropertyCount();i++)
        {   
            OrderBills orderBill=new OrderBills();

            orderBill.setOrderId(Integer.parseInt(((SoapObject)result.getProperty(i)).getProperty(0).toString()));  
            orderBill.setTableNo(((SoapObject)result.getProperty(i)).getProperty(1).toString());
            orderBill.setBillStatus(((SoapObject)result.getProperty(i)).getProperty(2).toString());
            orderBill.setDate(((SoapObject)result.getProperty(i)).getProperty(3).toString());
            orderBill.setTime(((SoapObject)result.getProperty(i)).getProperty(4).toString());

            list.add(orderBill);
        }
        return list;

    }
于 2012-12-31T18:42:49.417 に答える