ServiceStack - 使用类调用第三方Web服务

时间:2013-08-17 02:22:21

标签: api url servicestack

我正在尝试拨打第三方网络服务

他们的REST API使用以下URL样式。

http://www.VoiceBase.com/services?version=1.0&apikey=your-apikey&password=secret&action=list&status=processing

他们所有的服务电话都转到同一个/服务

如何创建一个类,以便以下方法有效?

var client = new JsonServiceClient("http://www.voicebase.com");
var response = client.Get<ResponseVoiceBaseListClass>(new VoiceBaseListClass());

我创建的其他课程但我还没有完成

    public class VoiceBaseBaseClass
    {
        public string version { get; set; }
        public string apikey { get; set; }
        public string password { get; set; }

        public VoiceBaseBaseClass()
        {
            this.version = "1.0";
            this.apikey = "API";
            this.password = "password";
        }
    }

    public class VoiceBaseListClass : VoiceBaseBaseClass, IReturn<ResponseVoiceBaseListClass>
    {
        public string action { get; set; }
        public string status { get; set; }

        public VoiceBaseListClass()
            : base()
        {
            this.action = "list";
            this.status = "processing";
        }
    }


    public class ResponseVoiceBaseListClass
    {
        public string requestStatus { get; set; }
        public string statusMessage { get; set; }
        public string fileStatus { get; set; }
        public List<string> mediaIds { get; set; }

        public ResponseVoiceBaseListClass()
        {
            this.mediaIds = new List<string>();
        }
    }

使用上述类进入服务器的调用是

/json/syncreply/VoiceBaseListClass?action=list&status=processing&version=1.0&apikey=API&Password=password

有没有办法可以强制服务堆栈客户端转到

 /Services

而不是

/json/syncreply/VoiceBaseListClass

1 个答案:

答案 0 :(得分:1)

我找到了一种方法,这对我来说非常有用。

    [RestService("/services", "GET")]
    public class VoiceBaseListClass : VoiceBaseBaseClass, IReturn<ResponseVoiceBaseListClass>
    {
    }

虽然这是一个不推荐使用的属性 - 新属性称为Route

https://github.com/ServiceStack/ServiceStack/wiki/Release-Notes

克里斯