WebApi无法读取传入的POST字符串参数,也就是调用这个WebApi的代码中不论给code0传入什么字符串,WebApi读到的code0都是空值。希望各位专家能够给与指点迷津!
也就是执行完string code = code0;后,code无法获取code0的值,也就是code0根本就没有传进来。
我的WebApi代码如下:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace expressApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SurfaceController : ControllerBase
{
public List<TechnicalRequirement> TechnicalRequirements = new List<TechnicalRequirement>();
[HttpPost("PostSurface")]
public IActionResult Surface([FromForm] string code0)
{
string code = code0;
if (TechnicalRequirements == null)
{
return NotFound();
}
return Ok(TechnicalRequirements);
}
}
我用于测试调用这个WebApi的代码如下(初步认为不会是下面的代码的问题,因为别人用JAVA写的程序一样无法传入参数):
```c#
string strUri = requestUri;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri);
request.Method = "POST";
//request.ContentType = "text/plain";
request.ContentType = "application/x-www-form-urlencoded";//form值的代码,只要修改req.ContentType = "application/x-www-form-urlencoded//application/json
string paraUriCoded = json;
byte[] payload;
payload = System.Text.Encoding.UTF8.GetBytes(paraUriCoded);
request.ContentLength = payload.Length;
Stream writer;
try
{
writer = request.GetRequestStream();
}
catch (Exception ex)
{
return ex.ToString();
}
writer.Write(payload, 0, payload.Length);
writer.Close();
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
Stream s = response.GetResponseStream();
StreamReader sRead = new StreamReader(s);
string postContent = sRead.ReadToEnd().ToString();
sRead.Close();
return postContent;
```
[FromForm] 这个去掉,然后试试,不行贴一下前端的代码
调用的代码呢?题主按照原贴中的回复改了调用代码了吗?题主肯定是没改调用代码加code0键名称吧
private void button1_Click(object sender, EventArgs e)
{
var sw = new Stopwatch();
sw.Start();
if (comboBox1.SelectedIndex == 1)
{//加上键名称code0,并且要使用System.Web.HttpUtility.UrlEncode编码内容,要不内容负责会导致键值对错误
txtRes.Text = Http.Post(comboBox1.Items[1].ToString(),"code0="+ System.Web.HttpUtility.UrlEncode(txtReq.Text.Trim(),System.Text.Encoding.UTF8));
}
else if (comboBox1.SelectedIndex == 0)
{//加上键名称code0,并且要使用System.Web.HttpUtility.UrlEncode编码内容,要不内容负责会导致键值对错误
txtRes.Text = Http.Post(comboBox1.Items[0].ToString(), "code0=" + System.Web.HttpUtility.UrlEncode(txtReq.Text.Trim(), System.Text.Encoding.UTF8));
}
else
{
txtRes.Text = "URI地址异常";
}
sw.Stop();
textBox1.Text = sw.ElapsedMilliseconds.ToString();
}