控制台HTTP侦听器访问JSON内容

时间:2017-04-26 16:40:30

标签: c# json owin httplistener

我刚开始学习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);
    }
}

0 个答案:

没有答案