首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法使用javascript将http POST请求发送到ASP.NET web api控制器

无法使用javascript将http POST请求发送到ASP.NET web api控制器
EN

Stack Overflow用户
提问于 2018-06-17 04:10:24
回答 1查看 366关注 0票数 1

有一个node.js服务器,当客户端使用websocket连接到node.js服务器时,我将调用我的web api控制器。我使用socket.io连接客户端和node.js服务器,然后node.js服务器向web api控制器发送一个xhr POST请求。但获取的响应为“”Message“”:“未找到与请求URI”“http://localhost:4928/api/Player”“匹配的HTTP资源。”,“MessageDetail”:“在控制器”“Player”“上未找到与请求匹配的操作。”}“

Web API方法

代码语言:javascript
复制
    public class PlayerController : ApiController
{
      public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    public string Post(string value)
    {
        return value;
    }
}

Node.js

代码语言:javascript
复制
 var app = require('express')();
var http = require('http').Server(app);
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();
var querystring = require('querystring');
var io = require('socket.io')(http);
io.on('connection', function (socket) {
    console.log('A user connected ' + socket.handshake.address);
    PostRequest(socket.handshake.address);
    //Whenever someone disconnects this piece of code executed
    socket.on('disconnect', function () {
        console.log('A user disconnected ' + socket.handshake.address);
    });
});


function PostRequest(data) {

    var url = "http://localhost:4928/api/Player";
    var params = "value=" + data;/* querystring.stringify({ "value": data })*/
    xhr.open('POST', url, true);
    xhr.onreadystatechange = function () {//Call a function when the state changes.
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log(xhr.responseText);
        }
        console.log(xhr.responseText);

    }
    xhr.send(querystring.stringify({ value: "sss" }));

}


http.listen(3000, function () {
    console.log('listening on *:3000');
});

无论如何,当我调用get方法发送一个xhr get请求时,这是可以工作的

EN

回答 1

Stack Overflow用户

发布于 2018-06-17 10:41:24

您需要通知Web API查找值parameter in the Request body,因为您没有通过查询字符串发送数据。尝试修改您的Post操作签名:

代码语言:javascript
复制
public string Post([FromBody]string value)
{
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50891404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档