Как получить доступ и работать с XML от API в C#

Моя цель состоит в том, чтобы вытянуть данные XML от API и загрузить его в базу данных SQL-сервера. Первый шаг, которого я делаю попытку здесь, должен получить доступ к данным и отобразить их. После того как я заставляю это работать, я циклично выполнюсь через каждую строку и вставлю значения в базу данных SQL-сервера. Когда я пытаюсь работать, код ниже ничего происходит и когда я вставляю URL непосредственно в браузер, я получаю эту ошибку

"2010-03-08 04:24:17 Wallet exhausted: retry after 2010-03-08 05:23:58. 2010-03-08 05:23:58"

Мне кажется, что каждое повторение цикла foreach звонит в сайт, и я заблокирован в течение часа. Я получаю данные из API неправильным способом? Там некоторый путь состоит в том, чтобы загрузить данные в память или массив затем цикл через это?

Вот бит кода, который я взломал вместе.

using System;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            string userID = "123";
            string apiKey = "abc456";
            string characterID = "789";
            string url = "http://api.eve-online.com/char/WalletTransactions.xml.aspx?userID=" + userID + "&apiKey=" + apiKey + "&characterID=" + characterID;
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(url);
            XmlNamespaceManager xnm1 = new XmlNamespaceManager(xmldoc.NameTable);
            XmlNodeList nList1 = xmldoc.SelectNodes("result/rowset/row", xnm1);
            foreach (XmlNode xNode in nList1)
            {
                Response.Write(xNode.InnerXml + "<br />");
            }
        }

        catch (SqlException em)
        {
            Response.Write(em.Message);
        }
    }
}

Вот образец xml

<eveapi version="2"> 
  <currentTime>2010-03-06 17:38:35</currentTime> 
  <result> 
    <rowset name="transactions" key="transactionID" columns="transactionDateTime,transactionID,quantity,typeName,typeID,price,clientID,clientName,stationID,stationName,transactionType,transactionFor"> 
      <row transactionDateTime="2010-03-06 17:16:00" transactionID="1343566007" quantity="1" typeName="Co-Processor II" typeID="3888" price="1122999.00" clientID="1404318579" clientName="unseenstrike" stationID="60011572" stationName="Osmeden IX - Moon 6 - University of Caille School" transactionType="sell" transactionFor="personal" /> 
      <row transactionDateTime="2010-03-06 17:15:00" transactionID="1343565894" quantity="1" typeName="Co-Processor II" typeID="3888" price="1150000.00" clientID="1404318579" clientName="unseenstrike" stationID="60011572" stationName="Osmeden IX - Moon 6 - University of Caille School" transactionType="sell" transactionFor="personal" /> 
    </rowset> 
  </result> 
  <cachedUntil>2010-03-06 17:53:35</cachedUntil> 
</eveapi>
5
задан JK. 13 May 2012 в 04:32
поделиться

1 ответ

Некоторый быстрый поиск (Google) показывает, что это механизм кеширования EVE API, сработавший в . Если вы запрашиваете одни и те же данные с того же ключа и IP, вам будет предложено повторно использовать то, что у вас уже есть. Поэтому убедитесь, что вы записываете все результаты, которые вы сразу же получаете на диск или в базу данных . Некоторое время кеширования составляет 1 день ...

4
ответ дан 14 December 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: