Comment publier objet personnalisé à l'api web à l'aide de C#

J'ai une web api de développement et de déploiement. Il fonctionne avec l'unité de test et à l'aide de fiddler. Cependant, si je créer un nouveau projet et d'essayer de publier des données, il envoie en retour un 400 Bad Request error. Je suis à la recherche d'un moyen pour publier cet objet personnalisé à l'aide d'un client écrit en C#. Contrairement à la WCF il n'y a pas de matadata pour créer proxy de ces objets, puis les instancier et de la transmettre à l'appel de méthodes. Comment avez-vous passer un objet personnalisé comme Client en tant que paramètre à une méthode?

URL serait http://host/directory/api/customer/AddNewCustomer
et définition de la méthode, c'est comme

[HttpPost]
public bool AddNewCustomer(Customer customerObj)

MODIFIER

Voici mon code client

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://host/directory/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.Timeout = TimeSpan.FromSeconds(30.0);

//strong typed instance
var values = new JObject();
values.Add("FirstName", "John");
values.Add("LastName", "Doe");

HttpContent content = new StringContent(values.ToString(), Encoding.UTF8,"application/json");

var response = client.PostAsJsonAsync("api/customer/AddNewCustomer", content).Result;
  • Êtes-vous sûr d'envoyer une requête post et pas un autre?
  • Avez-vous essayé? stackoverflow.com/questions/4088625/...
  • Veuillez vérifier avec un violon que vous êtes réellement l'envoi de votre JSON avec Content-Type: application/json dans l'en-tête avec un Content-Length: {lengthOfYourContent}. Ils sont nécessaires pour la WebApi à les gérer correctement
  • En outre, vous devriez être en mesure d'utiliser Newtonsoft JsonConvert.SerializeObject(yourObject), il vous donnera une chaîne json de la valeur de votre objet, qui peut être utilisé dans votre StringContent
InformationsquelleAutor Salman | 2015-07-11