我刚开始学习C#,对于我的第一个私人应用程序,我想通过创建一个非常简单的“端点”来测试到亚马逊Alexa的链接。 (对不起,如果我混淆了一点,我的术语有问题)
这是我非常简单的Http Listener:
static void Main(string[] args)
{
string baseAddress = "http://localhost:7775/";
try
{
using (WebApp.Start<Startup>(url: baseAddress))
{
Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
Console.ReadLine();
}
}
值Controller:
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post(string id, [FromBody] RootObject Request)
{
Console.WriteLine("Post request incomming - ");
}
// PUT api/values/5
public void Put(string id, [FromBody] RootObject Request)
{
Console.WriteLine(id);
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
public class Application
{
public string applicationId { get; set; }
}
public class String
{
}
public class Attributes
{
public String @string { get; set; }
}
public class Permissions
{
public string consentToken { get; set; }
}
public class User
{
public string userId { get; set; }
public Permissions permissions { get; set; }
public string accessToken { get; set; }
}
public class Session
{
public bool @new { get; set; }
public string sessionId { get; set; }
public Application application { get; set; }
public Attributes attributes { get; set; }
public User user { get; set; }
}
public class Application2
{
public string applicationId { get; set; }
}
public class Permissions2
{
public string consentToken { get; set; }
}
public class User2
{
public string userId { get; set; }
public Permissions2 permissions { get; set; }
public string accessToken { get; set; }
}
public class AudioPlayer
{
}
public class SupportedInterfaces
{
public AudioPlayer AudioPlayer { get; set; }
}
public class Device
{
public string deviceId { get; set; }
public SupportedInterfaces supportedInterfaces { get; set; }
}
public class System
{
public Application2 application { get; set; }
public User2 user { get; set; }
public Device device { get; set; }
public string apiEndpoint { get; set; }
}
public class AudioPlayer2
{
public string token { get; set; }
public int offsetInMilliseconds { get; set; }
public string playerActivity { get; set; }
}
public class Context
{
public System System { get; set; }
public AudioPlayer2 AudioPlayer { get; set; }
}
public class Request
{
}
public class RootObject
{
public string version { get; set; }
public Session session { get; set; }
public Context context { get; set; }
public Request request { get; set; }
}
他们说亚马逊文档使用curl发送测试请求:
curl -v -k http://localhost:7775/api/values/5 --data-binary '{"version":"1.0","session":{"new":true,"sessionId":"session1234","application":{"applicationId":"amzn1.echo-sdk-ams.app.1234"},"attributes":{},"user":{"userId":null}},"request":{"type":"LaunchRequest","requestId":"request5678","timestamp":"2015-05-13T12:34:56Z"}}'
结果:
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 7775 (#0)
> POST /api/values/5 HTTP/1.1
> Host: localhost:7775
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 227
>
* upload completely sent off: 227 out of 227 bytes
< HTTP/1.1 204 No Content
< Content-Length: 0
< Server: Microsoft-HTTPAPI/2.0
< Date: Wed, 26 Apr 2017 11:45:21 GMT
<
* Connection #0 to host localhost left intact
如果我设置一个断点并检查请求它总是为空,我在这里错过了一些东西或完全以错误的方式接近这个,因为这仍然是我的头脑。
由于
编辑:
对不起,这是启动类:
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}