Post chaîne JSON à l'API WEB
J'ai un ASP.NET WEB-API 2
application de la sorcière a besoin d'avoir un POST
méthode qui accepte un JOSN
string
avec la structure inconnue de javascript
.
J'ai activé cors
et GET
méthodes fonctionne très bien, cependant lors de l'envoi de JSON
à partir du client de l'api du paramètre de méthode est toujours null
.
C'est mon api
méthode:
//parameters i tried:
//[FromBody]string model
//[FromBody]dynamic model
//dynamic model
public HttpResponseMessage Post(string model)
{
return new HttpResponseMessage()
{
Content = new StringContent("POST: Test message: " + model)
};
}
et mon client méthode:
function sendRequest()
{
var Test = {"Name":"some name"};
var method = $('#method').val();
$.ajax({
type: method,
url: serviceUrl,
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(Test)
}).done(function (data)
{
$('#value1').text(data);
}).error(function (jqXHR, textStatus, errorThrown)
{
$('#value1').text(jqXHR.responseText || textStatus);
});
}
Donc la question est comment puis-je poster un inconnu JSON string
de javascript
et de l'accepter comme une chaîne de caractères dans mon api
méthode?
essayez
cela me donne un
Ne pas JSON.stringify. Utilisation des Données: {valeur: Test} et dans votre contrôleur ([FromBody]chaîne de Test). Qui doit renvoyer une chaîne de caractères.
N'utilisez pas de JOSN contentType. Il vous suffit de poster une chaîne de format json puis utilisez JsonConvert.DeserializeObject pour convertir votre objet attendu.
essayé mais j'ai toujours une valeur null
data: {model :JSON.stringify(Test)}
cela me donne un
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource
message d'erreurNe pas JSON.stringify. Utilisation des Données: {valeur: Test} et dans votre contrôleur ([FromBody]chaîne de Test). Qui doit renvoyer une chaîne de caractères.
N'utilisez pas de JOSN contentType. Il vous suffit de poster une chaîne de format json puis utilisez JsonConvert.DeserializeObject pour convertir votre objet attendu.
essayé mais j'ai toujours une valeur null
OriginalL'auteur Yoav | 2016-04-12
Vous devez vous connecter pour publier un commentaire.
J'ai édité ton code et il fonctionne bien.
Un [FromBody] attribut indique que le paramètre action ne vient que de l'entité de l'entrants HTTPRequestMessage.
href="https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api" >docs.microsoft.com/en-us/aspnet/web-api/overview/...
OriginalL'auteur Alex Nguyen
Le choix de traiter la requête POST générique de la requête HTTP, et manuellement analyser le corps:
Ou de l'utilisation d'un générique JToken, et de laisser le sérialiseur faire le reste:
Notes: de cette façon, vous n'avez pas besoin de modifier le code côté client, parce que vous êtes toujours l'Affichage de données json, pas une chaîne générique, qui est sémantiquement le bon choix si vous attendez de votre client à la poste sérialisé objets JSON.
Références:
http://bizcoder.com/posting-raw-json-to-web-api
OriginalL'auteur Federico Dipuma