如何从C#向ASP.Net web api发出POST请求.我使用了Newtonsoft DLL文件来创建json,但是,我无法将其发送到api.
我的代码是:
Login login = new Login
{
userid = username.Text,
pass = pass.Text
};
string json = JsonConvert.SerializeObject(login, Formatting.Indented);
Run Code Online (Sandbox Code Playgroud)
如何将此json发送到web api,并获得响应?
编辑
string url = "myurl";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Method = "POST";
httpWebRequest.Accept = "application/json; charset=utf-8";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
json = json.Replace("\r\n","");
//json = json.Replace("\",", "\"," + "\"" +"\u002B");
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
pass.Text = result.ToString();
}
Run Code Online (Sandbox Code Playgroud)
Ros*_*han 14
我通过一些编辑使它成功.我没有直接序列化json对象,而是使用了一个类,并为其赋值,并使用JavaScriptSerializer对其进行序列化.谢谢你的帮助Shekhar.
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Method = "POST";
httpWebRequest.Accept = "application/json; charset=utf-8";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string loginjson = new JavaScriptSerializer().Serialize(new
{
userid = username.Text,
password = pass.Text
});
streamWriter.Write(loginjson);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
pass.Text = result.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用HttpWebRequest类创建请求,并使用StreamWriter该请求编写 Json,最后HttpWebResponse从 Web API 获取。
var httpWebRequest = (HttpWebRequest)WebRequest.Create("path/api");
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)