Reputation: 3
I am trying to post a string value to a method within a controller. My controller has no views. Is it possible to call and post this action method from a console application?
I have tried a few solution from stack overflow.
code in console app:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:6586/MacCommService/LoadBalanceMacValues");
webRequest.Method = "POST";
var data = string.Format("jsonValues={0}", Uri.EscapeDataString(encryptedJson));
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(data);
requestWriter.Close();
code in MacCommServiceController:
public ActionResult LoadBalanceMacValues(string jsonValues) {
//var macKey = ConfigurationManager.AppSettings["macKey"].ToString();
jsonValues = "etc";
Response.Write("Json from action: " + jsonValues);
return View();
}
Upvotes: 0
Views: 1611
Reputation: 12491
I gess you don't set ContentType
of your httpWebRequest
and don't format your Json well:
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:6586/MacCommService/LoadBalanceMacValues");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{ \"jsonValues\" : \"" + Uri.EscapeDataString(encryptedJson) + "\" }";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
Also in your controller you should return Json like this:
public JsonResult LoadBalanceMacValues(string jsonValues) {
jsonValues = "etc";
return Json("Json from action: " + jsonValues);
}
Upvotes: 2