2012-05-24 49 views
0

我有這個共同CUser類與RestSharp到MVC4 API服務器發佈T得到空對象

public class CUser 
{ 
    public String Username { get; set; } 
    public String Password { get; set; } 
} 

然後,我有我的客戶對這個代碼,使用RestSharp

public void CreateUser() 
    { 
     RestRequest request = new RestRequest(Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.Resource = "user/{cUser}"; 

     CUser user = new CUser 
     { 
      Username = "Foo", 
      Password = "BarBaz" 
     }; 

     request.AddParameter("cUser", user, ParameterType.UrlSegment); 

     client.PostAsync<int>(request, (response, handler) => 
      { 
       System.Diagnostics.Debug.WriteLine(response.StatusDescription); 
       System.Diagnostics.Debug.WriteLine("id: " + response.Data); 
      }); 
    } 

而在此http路線我的Global.asax

  routes.MapHttpRoute(
      name: "CreateUser", 
      routeTemplate: "api/{controller}/{cUser}", 
      defaults: new 
          { 
           controller = "User", 
           action = "CreateUser", 
           cUser = RouteParameter.Optional 
          }); 

這servercode來處理它

public int CreateUser(CUser cUser) 
    { 
     User user = new User(cUser); 
     LoginManager manager = new LoginManager(); 
     return manager.CreateUser(user); 
    } 

但是我每次運行它時cUser的值都是空的(用戶名和密碼),所以我需要做一些restsharp來使它正確序列化?

回答

3

我想這是你想要什麼:

request.AddParameter("username", user.Username); 
request.AddParameter("password", user.Password); 

你在做什麼會導致cUser.ToString()被替換爲{cUser}佔位符。

+0

如果我將網站更改爲CreateUser(字符串用戶名,字符串密碼),它可以很好地工作,但如果將它更改爲http://pastebin.com/AfsJhJyL,它仍會在服務器上的兩個參數中都爲空我可以發送對象 – Mech0z

+0

您不能在URL中發送對象。這僅僅是HTTP支持的事情。您可以使用AddBody()在請求主體中將其作爲JSON發送。 –

+0

我不想發送對象本身,但我希望RestSharp和模型綁定器爲我修復所有爵士樂,所以我只在一端提供一個對象,並在另一端提取該對象,然後將該addbody ? – Mech0z

相關問題