Передача данных в веб-сервис ASP.NET с использованием JSON - PullRequest
0 голосов
/ 22 июня 2010

Я успешно возвратил данные из веб-службы ASP.Net в формате JSON (используя метод службы, для которого не требуется никаких параметров), но я пытался выполнить вызов веб-службы, для которого требуется параметр.

Webservice:

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=True)> _
Public Function TestWebService(ByVal Description As String) As Stock
    Dim res As New Stock(Guid.NewGuid, Description)
    Return res
End Function

Объект:

Public Class Stock

    Public Sub New()
    End Sub

    Public Sub New(ByVal StockID As Guid, ByVal Description As String)
        Me._StockID = StockID
        Me._Description = Description
    End Sub


    Public Property StockID As Guid
    Public Property Description As String

End Class

Javascript:

client = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
client.onreadystatechange = DataReturnedFromHttpRequest;
client.open("GET", "/MyWebService.asmx/TestWebService?" + JSON.stringify({"Description":["Test"]}), true); 
client.setRequestHeader("Content-Type", "application/json");
client.send(null);

Ответ:

{"Message":"Invalid web service call, missing value for parameter: \u0027Description\u0027.","StackTrace":"   at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n   at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

Я понимаю ошибку, но не могу понять, как правильно отформатировать мой запрос.

1 Ответ

1 голос
/ 23 июня 2010

Наконец-то понял ... Так что для любого любопытного ответ был тривиальным.

Запрос на получение должен быть в следующем формате

/MyWebService.asmx/MyWebserviceMethod?Param1=%22ParamValue1%22&Param2=%22ParamValue2

Тогда это работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...