Ciao a tutti, sto avendo dei problemi nell'ottenere una risposta di tipo JSON attraverso un WebService creato tramite Asp.Net 3.5.
Vi spiego i passi che ho fatto:
1 - Creato il WebService all'interno di un file asmx di cui riporto il codice
Codice PHP:
/// <summary>
/// Descrizione di riepilogo per WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//[System.ComponentModel.ToolboxItem(false)]
// Per consentire la chiamata di questo servizio Web dallo script utilizzando ASP.NET AJAX, rimuovere il commento dalla riga seguente.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
Person myPerson = new Person("Nome", "Cognome");
/// Serialize to JSON
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(myPerson.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, myPerson);
string json = Encoding.Default.GetString(ms.ToArray());
return json;
}
}
2 - Creato una classe Person che riporto
Codice PHP:
[DataContract]
public class Person
{
public Person() { }
public Person(string firstname, string lastname)
{
this.FirstName = firstname;
this.LastName = lastname;
}
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
Alla classe ho applicato gli attributi necessari per la serializzazione a JSON.
3 - Creato una pagina html con del codice JavaScript che riporto:
Codice PHP:
getHelloWorld = function()
{
address = 'http://localhost:49979/WebService1.asmx/HelloWorld';
var req = new Request.JSON({
async : true,
method:'post',
url: address,
onSuccess: function(responseText, responseXML){
alert(responseXML);
},
onFailure: function(responseText, responseXML){alert("errore")}
});
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch(e) {
//alert("Permission UniversalBrowserRead denied.");
}
req.send();
}
la chiamata è stata eseguita tramite AJAX utilizzando il framework Mootools.
La chiamata funziona perfettamente, solo che come risposta ottendo un qualcosa di questo genere:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{"FirstName":"Nome","LastName":"Cognome"}</string>
Perchè ottengo ancora un risposta di tipo xml? Quando in realtà dovrei ottenere solo il JSON
cioè
{"FirstName":"Nome","LastName":"Cognome"}