Reputation: 199
I've been trying to pass string data using [FromBody]
but it is always null.
public HttpResponseMessage Post(int id, [FromBody] string value)
{
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
Upvotes: 0
Views: 3003
Reputation: 71
you can use like below;
var json = JsonConvert.SerializeObject("your value parameter value");
var content = new StringContent(json, Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
try
{
client.BaseAddress = new Uri("your url" + "?id=your ID");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authString);
HttpResponseMessage Res = client.PostAsync("", content).Result;
var jsonContent = Res.Content.ReadAsStringAsync().Result;
}
catch (Exception ex)
{
throw;
}
}
above codes work in my app.
Upvotes: 0
Reputation: 21
[HttpPost]
public HttpResponseMessage Post(int id, [FromBody] string value)
{
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
The [HttpPost] attribute tells the routing engine to send any POST requests to that action method to the one method over the other. This is a type of overloading.enter link description here
Upvotes: 1
Reputation: 20658
In ASP.NET Core you cannot simply use Model binding to get the whole JSON body text as string. You have to either create a binding model or read the request body manually:
var bodyText = await this.Request.Content.ReadAsStringAsync();
Upvotes: 2