I have been working through the new WebAPI over on the asp.net site. I've created a few samples using simple strings that I can GET. I am looking to see if I can now POST and PUT to the service.
I am looking to see how I should add an object to the request that I can then POST or PUT from a .net 3.5 console application. The object I am trying to send is just a simple User class with Name, Surname, and UserID.
From my testing it seems that I can serialize this and send it via the URI but that hardly seems correct. I notice that these requests have headers, can I put the data in there?
Using .NET 3.5, there are not many elegant options I think but this code using WebClient
works (you need adding reference to System.Web.Extensions):
WebClient client = new WebClient();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var data = serializer.Serialize(new {Name = "Ali", Title = "Ostad"});
client.Headers[HttpRequestHeader.ContentType] = "application/json";
var downloadString = client.UploadString("http://localhost:59174/api/values", data); // value is "Ali"
And here is controller action:
// POST /api/values
public string Post(JsonValue value)
{
return value.AsDynamic().Name;
}
Check out the HttpClient on NuGet. This makes it easy to do most things over http.
And here's an example of using it.