C # - xml-rpc с одним методом и двумя именованными параметрами - PullRequest
2 голосов
/ 17 марта 2011

Это уточненный и сфокусированный вопрос, который я задал на прошлой неделе о проекте, над которым я работаю, чтобы использовать веб-сервис http://www.upcdatabase.com через xml-rpc .net.Я работаю в C #.Запрос требует именованный метод («lookup»), а также 2 именованных параметра («rpc_key») и («upc»), оба типа являются sting.Сначала я хотел создать интерфейс, подобный следующему:

[XmlRpcUrl("http://www.upcdatabase.com/xmlrpc")]
   public interface UPChelp : IXmlRpcProxy
  [XmlRpcMethod("lookup")]
  upcLookupValues lookupUPC(string rpc_key, string upc);

upcLookupValues is a struct that is returned defined as:
public struct upcLookupValues
    {
        public string upc;
        public int pendingUpdates;
        public string status;
        public string ean;         
        public string issureCountryCode;
        public bool found;
        public string description;
        public string message;
        public string size;
        public string issureCountry;
        public string noCacheAfterUTC;
        public string lastModifiedUTC;
    }

Генерация прокси, с которой я работал:

UPChelp upcObj = XmlRpcProxyGen.Create<UPChelp>();
upcLookupValues myLookup = upcObj.lookupUPC("000000000000000000000000000000000000000000”, "639382000393");

Я получаю ответ о недопустимых параметрах .. Итак, при чтениичасто задаваемый вопрос xml-rpc:

«2.20 Как мне вызвать метод XML-RPC с переменным числом параметров?Ключевое слово params можно использовать для вызова метода XML-RPC, который принимает переменное количество параметров.Например, если метод XML-RPC принимает переменное число целочисленных параметров, его можно определить следующим образом: [XmlRpcUrl ("http://www.cookcomputing.com/notimpl.rem")] открытый интерфейс IParams: IXmlRpcProxy {[XmlRpcMethod]
int UseNumbers (params int [])числа);} И называется так: IFoo proxy = (IFoo) XmlRpcProxyGen.Create (typeof (IFoo)); proxy.SendMultipleParameters (1); proxy.SendMultipleParameters (1, 2, 3); ”

В качестве альтернативы параметры в этом примере могут быть представлены в виде массива типа int []: int [] parameters = new int [] {1, 2, 3}; proxy.SendMultipleParameters (parameters); "

Моя проблема в том, что я не понимаю, как применить эту концепцию к моему проекту (я новичок), я попытался upcLookupValues ​​[] parameters = new string [] {"rpc_key", "upc"}; Но я получаюя не могу неявно преобразовать строку [] в readUPC.upcLookupvalues ​​[]. Я также не понимаю, как определить новый прокси для отправки. Мои пальцы скрещены, этот пост имеет смысл. Я уверен, что вы, ребята из C # xml-rpc, смеетесь правильноТеперь.

1 Ответ

2 голосов
/ 27 марта 2011

Я писал об этом здесь: База данных UPC XML-RPC

...