Mam domyślną instancję API mvc web zbudowaną z szablonu Visual Studio 2012. Ma następujące trasy i metodę postu w domyślnym ValuesController - strona MVC jest niezmodyfikowana od początkowego utworzenia innego niż zawartość metody Post. Ponadto używam platformy .NET 4.0, ponieważ zamierzam kierować reklamy na platformę Azure.aplikacja konsolowa Post HttpClient do web api mvc
metoda Rejestracja
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
i post metoda
// POST api/values
public string Post([FromBody]string value)
{
if (value != null)
{
return "Post was successful";
}
else
return "invalid post, value was null";
}
I stworzył aplikację konsoli, która używa HttpClient symulować wysyłania do serwisu, niestety „wartość” przyjście do Poczty jest zawsze zero. Metoda Post została pomyślnie wykonana po wywołaniu PostAsync w HttpClient.
To nie jest dla mnie jasne, jak mapować mój wniosek taki, że wartość zawiera StringContent jestem przechodzącej w ...
static void Main(string[] args)
{
string appendUrl = string.Format("api/values");
string totalUrl = "http://localhost:51744/api/values";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/xml");
string content = "Here is my input string";
StringContent sContent = new StringContent(content, Encoding.UTF8, "application/xml");
HttpResponseMessage response = null;
string resultString = null;
client.PostAsync(new Uri(totalUrl), sContent).ContinueWith(responseMessage =>
{
response = responseMessage.Result;
}).Wait();
response.Content.ReadAsStringAsync().ContinueWith(stream =>
{
resultString = stream.Result;
}).Wait();
}
Jestem nowy w Web API MVC i wykorzystania HttpClient - dowolna pomoc, która wskaże mi właściwy kierunek, zostanie bardzo doceniona.
To było świetne! Dwa brakujące fragmenty z mojego oryginalnego kodu to znak równości (dla typów prostych) i ContentType. Dodanie tych dwóch części rozwiązało problem. – jtoth3