Как обработать SOAPPRIMITIVE ответ - PullRequest
0 голосов
/ 07 июля 2011

У меня есть метод WCF, который возвращает строковый тип.

Это мой вывод

{"Table1": [{"TableName": "LoadDistributor", "Description":"Distributor", "MandatoryFlag": "1", "Status": "", "Priority": "0"}, {"TableName": "LoadPrice", "Description": "Price", "MandatoryFlag": "1 "," Status ":" "," Priority ":" 0 "}, {" TableName ":" LoadProduct "," Description ":" Product "," MandatoryFlag ":" 1 "," Status ":" ", "Priority": "0"}, {"TableName": "LoadTradeSchemeDetail", "Description": "TradeSchemeDeta", "MandatoryFlag": "1", "Status": "", "Priority": "0"}, {"TableName": "RD.AlternativeProductDetail", "Description": "AltProdutDetail", "MandatoryFlag": "0", "Status": "", "Priority": "0"}, {"TableName": "RD.AlternativeProductHeader "," Описание ":" AltProdutHeader "," MandatoryFlag ":" 0 "," Status ":" "," Priority ":" 0 "}, {" TableName ":" RD.BatchPriceDetail "," Description":" BatchPrice "," MandatoryFlag ":" 1 "," Status ":" "," Priority ":" 0 "}, {" TableName ":" RD.Executive "," Description ":" Executive "," MandatoryFlag ":" 1 "," Status ":" "," Priority ":" 0 "}, {" TableName ":" RD.Route "," Description ":" Route ","MandatoryFlag": "1", "Status": "", "Priority": "0"}, {"TableName": "RD.vwRetailer", "Description": "Retailer", "MandatoryFlag": "1", "Status": "", "Priority": "0"}, {"TableName": "RD.vwRouteDetail", "Description": "RouteDetail", "MandatoryFlag": "1", "Status": "", "Priority": "0"}, {"TableName": "XA.vwProductType", "Description": "Товарный продукт C", "MandatoryFlag": "1", "Status": "", "Priority":"0"}, {"TableName": "XA.vwTown", "Description": "Town", "MandatoryFlag": "1", "Status": "", "Priority": "0"}]}

Это мой метод обработки мыла

    // ksoap2 calling wcf
public SoapPrimitive soapPrimitive(String METHOD_NAME, String SOAP_ACTION, String NAMESPACE, String URL) throws IOException, XmlPullParserException {
    SoapPrimitive responses = null;
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); //set up request
    request.addProperty("strExec", "7067");
    request.addProperty("strBusinessUnit", "HEMA");
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); //put all required data into a soap envelope
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);  
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);  
    httpTransport.debug = true; 

    try{

        Log.w("Log_cat" ,"*********" + envelope.toString());
        httpTransport.call(SOAP_ACTION, envelope);
        Log.w("log_tag", " ===========" +SOAP_ACTION );

        // Object result = (Object)envelope.getResponse();
        // JSONArray jArray = new JSONArray(result.toString());
        // Log.w("log_tag", " ===*********==" +jArray );

         responses = (SoapPrimitive)envelope.getResponse();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

   // Object response= envelope.getResponse();
    return responses;
 }

Мой метод C # возвращает строку с JSON (в виде строки).

Как получить имя таблицы только вСписок или Массив.Пожалуйста, помогите мне. Что здесь не так?

1 Ответ

3 голосов
/ 07 июля 2011

Вы понимаете разницу между SOAP и JSON? kSOAP предназначен для служб обработки, ожидающих SOAP-запрос и возвращающих SOAP-ответ. Поэтому, если у вас нет службы SOAP, возвращающей однострочный элемент с JSON, вам не нужен (и не может использоваться) kSoap. Если у вас есть служба REST, возвращающая JSON, используйте простые DefaultHttpClient и HttpPost как , как описано здесь Если вы используете JSON все время, он также отвечает на ваш предыдущий вопрос .

...