如何从silverlight应用程序调用Web api

时间:2013-09-13 05:22:31

标签: c# json asp.net-web-api

我是Web api和json的新手。我不知道调用WebApi中的方法。下面的方法是在Webapi中:

[HttpGet]
public bool AddAccount([FromRoute]string accountname)
{
    try
    {
        BizFramework.Web.Model.Account data = new BizFramework.Web.Model.Account();              
        data.AccountGuid = Guid.NewGuid();
        data.AccountName = accountname;
        data.ParentAccountID = 0;
        data.AccountTypeID = 13;
        data.AccountNo = "8060";
        data.Active = true;
        data.HierarchyLevel = 1;
        data.CashFlowID = 3;
        data.OpeningBalanceDate = DateTime.Now;
        data.IscashBasis = true;
        data.Createdby = "BAOwner";
        data.CreatedDatetime = DateTime.Now;
        data.Modifiedby = "BAOwner";
        data.ModifiedDatetime = DateTime.Now;
        BA.AddToAccounts(data);
        BA.SaveChanges();
        return true;
    }
    catch (Exception ex)
    {
        File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "log.txt", ex.ToString());
        return false;
    }
} 

使用此链接:

  

http://example.com/CustomerPortalService12/AddAccount/AccountsReceivable

我可以添加。但是通过编码我该如何添加?

1 个答案:

答案 0 :(得分:2)

public void AddAccount(string accountname, Action<bool> success, Action<bool> failure)
    { var client = new RestClient("http://[localhost]/CustomerPortalService12");
        // client.Authenticator = new HttpBasicAuthenticator(username, password);

        var request = new RestRequest("AddAccount/AccountsReceivable/" + accountname, Method.GET);

        client.ExecuteAsync(request, (response) =>
        {
            if (response.ResponseStatus == ResponseStatus.Error)
            {
                failure(response.ErrorMessage);
            }
            else
            {
                var result= JsonConvert.DeserializeObject<bool>(response.Content);
                success(result);
            }
        }); }

调用此函数

AddAccount("accountname",
               (item) => Dispatcher.BeginInvoke(() =>
               {

                   MessageBox.Show("Done!");

               }),
                   (error) => Dispatcher.BeginInvoke(() =>
                   {
                       MessageBox.Show(error);
                   }));

我使用RestSharp完成了这项工作。

有关详细信息,请转到此处

http://restsharp.org/