2013-08-17 90 views
1

我正在嘗試撥打第三方網絡服務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

我想你也許可以塑造這個爲你工作。我的理解是,JsonServiceClient旨在使連接到其他ServiceStack服務變得容易。它通過使用ServiceStack約定(因此它連接到/ json/syncreply/...)執行此操作。您正嘗試使用它連接到第三方api。 AFAIK這不是該課程的設計目的。我認爲你最好是寫自己的班級來管理與第三方API的連接(除非他們有自己的班級)。我可能是錯的 - 但它看起來非常適合ServiceStack。 – gregpakes

回答

1

我找到了一種方法來做到這一點,這是對我工作的偉大。

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

雖然這是一個過時的屬性 - 新的屬性稱爲路由

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

克里斯