我新建了一个webapi,一开始是用的GET调用,已经能够成功调用了。后来我想修改成POST调用,改过以后再也用不起来了,但是在这个WEBAPI上面的其他方法调用正常,就是这个API无法调用,怎么也找不到原因。
请哪位专家帮助指点迷津!
图一是webapi的代码:
图二是调用的这个webapi的代码界面:
图三是调用方法代码:
var data="\"字符串内容\"";
这样,改成下面这样就行了
如果不是这种形式的数据,就是400 Bad Request这个错误.有帮助麻烦点个采纳【本回答右上角】,谢谢~~
private void button1_Click(object sender, EventArgs e)
{
var sw = new Stopwatch();
sw.Start();
if (comboBox1.SelectedIndex==1)
{
txtRes.Text = Http.Post(comboBox1.Items[1].ToString(), "\""+txtReq.Text.Trim()+"\"");////////////////
}
else if (comboBox1.SelectedIndex == 0)
{
txtRes.Text = Http.Post(comboBox1.Items[0].ToString(), "\""+txtReq.Text.Trim()+"\"");////////////////
}
else
{
txtRes.Text = "URI地址异常";
}
sw.Stop();
textBox1.Text = sw.ElapsedMilliseconds.ToString();
}
如果数据太复杂,最好是整成Model的形式来调用,这是传递JSON字符串
报错信息是404,说明你发送请求的url是不正确的,你的action上有个[HttpPost("PostSurface")]
,但是你的请求url是api/Surface
,看起来你的controller应该有[Route("api/[controller]")]
, 所以正确的url应该是:api/Surface/PostSuface
。
前端:
HttpWebRequest req =
(HttpWebRequest)HttpWebRequest.Create("https://localhost:5001/api/test/PostSuface");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string paraUriCoded = "你好中国https://baidu.com;nice to meet you";
byte[] payload;
payload = System.Text.Encoding.UTF8.GetBytes(paraUriCoded);
req.ContentLength = payload.Length;
Stream writer;
writer = req.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
HttpWebResponse response;
try
{
response = (HttpWebResponse)req.GetResponse();
}
catch (WebException e)
{
response = e.Response as HttpWebResponse;
}
后端:
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
[HttpPost("PostSuface")]
public IActionResult Post([FromForm]string code)
{
return Ok();
}
}
404错误应该是路径的问题,去掉[HttpPost("PostSurface")],通过https://localhost:5001/api/Surface/Surface试一下可以访问么
初步判断问题还是在向WEBAPI传值上,数据没有传进去。但我不知道如何解决!