将数据从网页表单发送到自托管的api

时间:2015-09-12 04:32:14

标签: c# html asp.net-web-api owin

我有一个自我管理的自托管API,以及一个简单的html网站,我想将表单数据提交到自托管API。我目前正在测试localhost上的webapi,该站点也通过IIS托管在localhost上。我不确定我需要在html或C#代码中进行哪些更改才能使其正常工作。以下是我所拥有的基础知识:

public class TestController : ApiController
{
    public TestController() {}

    [HttpGet]
    public IHttpActionResult() 
    {
        //do stuff
        return OK();
    }

    [HttpPost]
    //POST localhost:9400/api/Test
    public IHttpActionResult Post([FromBody]FormDatacollection name) 
    {
        //do stuff
        return OK();
    }
}

这是一个非常简单的网站html:

<html>
    <head>
        <title>
            My Test Page
        </title>
    </head>
    <body>
        <form action="localhost:9400/api/test" method="post">
            <input type="text" name="name"><br>
        </form>
    </body>
</html>

基本上,我希望将放入网站文本框中的文本通过帖子发送到自托管api。我用我所拥有的东西尝试过它,但它从未进入过帖子,似乎请求从未从浏览器发出。但是,如果我在浏览器中手动键入localhost:9400 / api / Test,则会到达Get,然后我会收到OK响应。

我只是拥有web api的基本配置。

public void Configuration(IAppBuilder appBuiler) 
{
    HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        appBuilder.UseWebApi(config);
}

我想做的是什么,如果是的话,我怎么能去做呢?

1 个答案:

答案 0 :(得分:0)

如果没有一些更改,它将无法正常工作,您的其余api期望数据以json的形式发送。首先,我强烈建议您获取Fiddler的副本,然后您将确切地看到来自您网站的内容以及从您的服务返回的内容。您可能发现无法在服务中进行调试,因为服务接收的内容与控制器中的任何签名都不匹配,因此框架本身正在处理无效请求。该框架将使用基于http动词和方法参数的方法匹配请求。

在使其工作方面,请搜索将HTML表单数据发送到其他API,在此站点和其他地方发送大量结果。