我正在从我的C#项目向我的控制器发出HTTP请求。我在两种情况下都使用webapi 2。我设法输入控制器的方法但是当我检查我发送的数据时它保持为空或者因为我正在使用动态'变量它只是说:'对象'。
以下是我发送的代码:
var request = (HttpWebRequest) WebRequest.Create("http://localhost/MyPage/api/user/login/" );
var postData = string.Format( "={0};{1}", user.username, user.password );
var data = Encoding.ASCII.GetBytes( postData );
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write( data, 0, data.Length );
}
var response = (HttpWebResponse) request.GetResponse();
var responseString = new StreamReader( response.GetResponseStream() ).ReadToEnd();
在控制器中,我希望动态填充用户名和密码:
[HttpPost]
[ActionName("login")]
public IHttpActionResult LoginUser( [FromBody]dynamic user )
{
if (user == null)
{
const string message = "Object is null";
}
string username;
string password;
try
{
username = user.username;
password = user.password;
}
}
此处用户只显示对象,user.username和user.password为空。我尝试使用NameValueCollection或Byte数组。这些都没有。
我找到了解决方法,但对我来说听起来并不好。如果我发送字符串' ='在前面签名我得到了字符串。例如,我可以发送" =用户名;密码"但它看起来并不普遍和优雅。是否有正常的方式发送这两个?