2017-02-24 100 views
0

我希望有人可以提供帮助。我被要求编写测试应用程序来使用Web API。简单类型参数的C#Web Api Post方法

的方法,我试图消耗,具有以下特征:

[Transaction] 
[HttpPost] 
[Route("api2/Token/")] 
public ApiToken Token(Guid companyId, DateTime dateTime, string passCode) 

我写了一个简单的C#控制台应用程序。然而,无论我发送到API返回404错误消息,我看不出我的问题是什么。

我的代码来使用API​​如下:

_client.BaseAddress = new Uri("http://localhost:1390"); 
_client.DefaultRequestHeaders.Accept.Clear(); 
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

var companyId = Guid.Parse("4A55A43A-5D58-4245-AD7C-A72300A69865"); 
var apiKey = Guid.Parse("FD9AEE25-2ABC-4664-9333-B07D25ECE046"); 
var dateTime = DateTime.Now; 

var sha256 = SHA256.Create(); 
var bytes = Encoding.UTF8.GetBytes(string.Format("{0}:{1:yyyyMMddHHmmss}:{2}", companyId, dateTime, apiKey)); 
var hash = sha256.ComputeHash(bytes); 

var sb = new StringBuilder(); 
foreach (var b in hash) 
{ 
    sb.Append(b.ToString()); 
} 

try 
{ 
    Console.WriteLine("Obtain an authorisation token"); 

    var response = await _client.PostAsJsonAsync("api2/Token/", new { companyId = companyId, dateTime = dateTime, passCode = sb.ToString() }); 

} 
catch (Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 

我GOOGLE了所有的例子似乎对象发布到一个接受对象的网页API方法。是否可以发布多个简单类型?

+0

你调用的方法的签名不使用URI参数匹配定义的方法的签名,它需要一个Guid,DateTime和字符串,但是你传递一个对象。为了让它接收一个对象,你必须将API方法定义为接收一个对象参数,然后将一个serializabe对象传递给它,或者你可以按照签名定义的方式传递参数。 – Ogbe

+0

对不起,有一个简单的问题,但我如何通过Web API签名定义的方式传递参数? –

+0

如果您有权访问Api方法声明,则可以将其修改为接受参数作为路由的一部分。 – Ogbe

回答