无法读取XML-RPC的响应

时间:2011-02-01 16:56:51

标签: c# .net parsing xml-rpc

我目前正在使用http://www.xml-rpc.net/

中的XML-RPC

我已经看到数百个示例从服务中获取一个结果并将其存储在结构中,但我需要存储“N”值。

我会更好地解释它。我有一个源文件,基本上包含:

public struct estructura
{
    public string apiKey;
}

[XmlRpcUrl("http://example.net/api/xmlrpc/thisfile.php")]

public interface IStateName : IXmlRpcProxy
{
    [XmlRpcMethod("myserver.search.getSomething")]
    XmlRpcStruct busqueda(estructura co);
}

我在PageLoad上还有一个aspx文件

protected void Page_Load(object sender, EventArgs e)
{
    IStateName proxy = XmlRpcProxyGen.Create<IStateName>();

    try
    {
        estructura uno;
        uno.apiKey = "My_API_Key_Value"; // Hidden for security reasons
        XmlRpcStruct a = proxy.busqueda(uno);               
    }
    catch (Exception ex)
    {
        Response.Write("Some error...");
    }

}

这实际上有效,我正在使用Fiddler读取HTTP请求/响应,一切都很好,服务返回此...

HTTP/1.1 200 OK
Date: Tue, 01 Feb 2011 16:06:51 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.1.6
Pragma: no-cache
Connection: close
XMLRPC-server: SimpleXMLRPC/0.7
Content-Length: 2177
Content-Type: text/xml; charset=UTF-8


<methodResponse>
    <params>
        <param>
            <value>
                <struct>
                    <member>
                        <name>ATEId</name>

                        <value>
                        <string>6</string>
                        </value>
                    </member>

                    <member>
                    <name>ATEDescripcionEsp</name>

                    <value>
                    <string>* No Especificado *</string>
                    </value>
                    </member>
                </struct>
            </value>
        </param>

        <param>
            <value>
                <struct>
                    <member>
                        <name>ATEId</name>

                        <value>
                        <string>10</string>
                        </value>
                    </member>

                    <member>
                        <name>ATEDescripcionEsp</name>

                        <value>
                        <string>Asociaciones de empresas</string>
                        </value>
                    </member>
                </struct>
            </value>
        </param>

        <param>
        [The rest of params...]
        </param>
    </params>
</methodResponse>

我的问题是“var a”只存储第一个“param”,我的意思是,我调试了代码,“a”只包含这些条目

Name                        Value
["ATEDescripcionEsp"]   "* No Especificado *"   
["ATEId"]                   "6" 

所以我只想从服务器响应中存储所有结果(下一个结果应该是ATEId = 10和ATEDescripcionEsp =“Asociaciones de Empresas”),或者,如果我不能这样做,我需要存储来自的纯XML响应,然后我会手动解析它。

1 个答案:

答案 0 :(得分:0)

看起来你正在返回一组值。您可能需要考虑更改结构的模式以接受数组或使结构成为值数组。