【问题标题】:How to process the SOAPPRIMITIVE response如何处理 SOAPPRIMITIVE 响应
【发布时间】:2011-07-07 09:02:12
【问题描述】:

我有返回字符串类型的 WCF 方法。

这是我的输出

{"Table1" : [{"TableName" : “LoadDistributor”,“描述”: “分销商”,“MandatoryFlag”: “1”,“状态”:“”,“优先级”: "0"},{"表名" : "LoadPrice","Description" : "价格 ","MandatoryFlag" : "1","状态" : "","优先级" : "0"},{"TableName" : “加载产品”,“描述”:“产品 ","MandatoryFlag" : "1","状态" : "","优先级" : "0"},{"TableName" : "LoadTradeSchemeDetail","描述" : "TradeSchemeDeta","MandatoryFlag" : “1”,“状态”:“”,“优先级”: "0"},{"表名" : "RD.AlternativeProductDetail","描述" :“AltProdutDetail”,“MandatoryFlag”: “0”,“状态”:“”,“优先级”: "0"},{"表名" : "RD.AlternativeProductHeader","描述" :“AltProdutHeader”,“MandatoryFlag”: “0”,“状态”:“”,“优先级”: "0"},{"表名" : "RD.BatchPriceDetail","描述" : "BatchPrice ","MandatoryFlag" : “1”,“状态”:“”,“优先级”: "0"},{"表名" : “RD.Executive”,“描述”: “执行”,“强制标志”: “1”,“状态”:“”,“优先级”: "0"},{"表名" : "RD.Route","Description" : "路线 ","MandatoryFlag" : "1","状态" : "","优先级" : "0"},{"TableName" : “RD.vwRetailer”,“描述”: “零售商”,“MandatoryFlag”: “1”,“状态”:“”,“优先级”: "0"},{"表名" : "RD.vwRouteDetail","描述" : "RouteDetail","MandatoryFlag" : “1”,“状态”:“”,“优先级”: "0"},{"表名" : “XA.vwProductType”,“描述”: "品牌产品 C","MandatoryFlag" : “1”,“状态”:“”,“优先级”: "0"},{"表名" : “XA.vwTown”,“描述”:“城镇 ","MandatoryFlag" : "1","状态" : "","优先级" : "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 的字符串(作为字符串)。

如何仅在列表或数组中获取表名。 请帮帮我。这里有什么问题?

【问题讨论】:

    标签: android wcf json ksoap


    【解决方案1】:

    您了解 SOAP 和 JSON 之间的区别吗? kSOAP 用于处理期望 SOAP 请求并返回 SOAP 响应的服务。因此,除非您有 SOAP 服务返回带有 JSON 的单个字符串元素,否则您不需要(也不能使用)kSoap。如果您有返回 JSON 的 REST 服务,请使用简单的 DefaultHttpClientHttpPost 作为 described for example here。如果您一直在使用 JSON,它也会回复您的 previous question

    【讨论】:

    • 这是非常有用的建议。在我的情况下,WCF 服务返回带有 JSON 的字符串元素。
    • 在我的情况下,我想使用 SOAP,但它返回带有 JSON 的字符串元素。现在结果是如何获取值的正确方法?请帮助我。
    • 请指导我如何处理这样的 SOAP 值: {"Table1" : [{"TableName" : "LoadDistributor","Description" : "Distributor","MandatoryFlag" : "1", “状态”:“”,“优先级”:“0”}]}
    • 谢谢拉迪斯拉夫。它非常有用的链接
    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 2014-09-28
    • 2011-08-10
    • 2013-04-24
    • 2021-04-10
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多