2011-02-01 3 views
0

Я в настоящее время с помощью 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); 
} 

Я также один ASPX файл с этим на PageLoad

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> 

Моя проблема заключается в том, что «вар а» хранит тОЛЬКО первый «PARAM», я имею в виду, я отлаживается код и «» содержит только эти записи

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

Так что я только хочу, чтобы хранить все результаты (следующий результат должен быть ATEId = 10 и ATEDescripcionEsp = «Asociaciones де Empresas») из ответа сервера или, если я не могу этого сделать, мне нужно хранить простой XML из ответа, тогда я буду разбирать его вручную.

+0

Пожалуйста, не помещайте такие вещи, как «C#» в названии. Для этого у нас есть теги. –

ответ

0

Похоже, вы возвращаете набор значений. Вы можете захотеть изменить схему структуры, чтобы принять массив или сделать структуру массив значений.

+0

Хорошо, я забыл сказать, я не могу изменить сервис, он запечатан, я этого не сделал, я не могу его изменить. –

+0

Ваш код C# должен анализировать XML как массив. Вам не нужно менять службу PHP. – n8CodeGuru

Смежные вопросы