ASMX webservice pas de retour JSON, ne peuvent POSTER en utilisant l'application/x-www-form-urlencoded contentType
Je peux appeler mon webservice à l'aide de jQuery SI le contentType = "application/x-www-form-urlencoded; charset=utf-8"
Ce sera, cependant, de retour de xml: <string>[myjson]</string>
Si j'essaie de POSTER au service à l'aide de "application/json; charset=utf-8" je reçois une erreur 500 avec un vide StackTrace et ExceptionType. Mon webservice fonction n'est jamais touché donc je ne suis pas tout à fait sûr de savoir comment déboguer cette situation.
Mes méthodes et les classes sont décorées avec les attributs appropriés et sont configurés pour utiliser le JSON que leur type de réponse (comme le font mes wsdl et disco des fichiers). J'ai l'Ajax extensions installées et les entrées nécessaires dans le web.config.
C'est sur une batterie de serveurs SharePoint, mais je ne suis pas sûr que cela fait trop de différence. J'ai déployé le web.les modifications de configuration sur tous les WFE bien installé les extensions ajax. De nouveau le service fonctionne, il ne veut tout simplement pas accepter quoi que ce soit, mais le type de contenu par défaut.
Pas sûr de ce que je suis en manque, ici, les gars...
mon appel ajax:
$.ajax({
type: "POST",
url: "/_vti_bin/calendar.asmx/Test",
dataType: "json",
data: "{}",
contentType: "application/json; charset=UTF-8",
success: function(msg){
alert(msg);
},
error: function(xhr, msg){ alert(msg + '\n' + xhr.responseText); }
});
Ma classe webservice:
[WebService(Namespace = "http://namespace")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public class CalendarService : WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Test()
{
return "Hello World";
}
}
OriginalL'auteur Steve Ruiz | 2009-05-22
Vous devez vous connecter pour publier un commentaire.
J'ai ce travail en 2.0 en utilisant les services web, mais j'ai mis en place la protection de l' .d (voir dataFilter ci-dessous). Moi aussi je suis de retour d'un tableau d'objets. REMARQUE: la classe de l'objet est statique, ou il ne serait pas fonctionner correctement pour moi au moins.
Ici est un snippett de mon web service:
...
...
le code de l'objet:
OriginalL'auteur Mark Schultheiss
J'ai lutté avec cela aujourd'hui avec une application iPhone de parler à un .Net Web Service.
J'ai trouvé que si j'ai changé mon Type de Contenu application/jsonrequest elle est passée sans problème et j'ai été en mesure de traiter les données de mon serveur web.
Juste pour sourire, j'ai ajouté la ligne mentionnée ci-dessus pour mon site web.config, mais il n'a pas fait application/json travail.
OriginalL'auteur Steve Reed Sr
ne sais pas si cela pourrait être simple, mais je suis en utilisant jQuery pour rappeler JSON à partir de mon site web méthodes.
la principale différence que je vois est l'attribut de la classe
Je suppose que vous utilisez le framework 3.5, car c'est la seule façon d'exposer JSON web méthodes.
Mes appels formulaire jQuery paraissent presque identiques, donc pas de problème là.
OriginalL'auteur Bobby Borszich
Si vous testez ce dans IE, essayez de supprimer le jeu de caractères de la déclaration de votre contentType attribut (c'est à dire qu'il devrait ressembler à ceci:
J'ai encore à découvrir pourquoi, mais IE semble pour obtenir ses culottes dans une torsion lors de la prise de JSON appels avec les "
charset=UTF-8
".OriginalL'auteur Phil.Wheeler
Je pense que vous êtes à la recherche pour le WebInvoke ou WebGet Attribut, il vous permet de spécifier l'Uri Modèle, type de carrosserie, la demande et responseformats, par exemple:
Cette Lien peut aider. Il y a un article similaire pour WebInvoke (utilisé principalement pour la poste).
OriginalL'auteur marr75
J'utilise JQuery, AJAX, JSON appels à ASMX webservice tout à fait un peu. Il fonctionne parfaitement sur tous les navigateurs. Je suis en utilisant .NET 2.0 avec l'ASP.NET AJAX Extensions installées (livré en 3.5).
Ma classe a la même décorateurs comme votre. Mes méthodes ont seulement le
[WebMethod(EnableSession = true)]
décorateur. Mon web.config a l'entrée suivante dans sa section httpHandlers:Mon jquery appel se présente comme suit:
Cet article est la racine de ma connaissance.
OriginalL'auteur srmark
Semble que vous devez spécifier json comme format de réponse dans le scriptMethod tag. C'est à partir de vb.net mais je suis sûr que vous obtenez l'idée:
ResponseFormat:=ResponseFormat.Json
OriginalL'auteur ScottE