Silverlight: ошибка JSON при вызове веб-службы - PullRequest
0 голосов
/ 28 февраля 2012

ОК, поэтому я понятия не имею, почему это не работает. Я нашел 4 различных урока / примера вызова асинхронного вызова веб-службы JSON в Silverlight, и все они используют тот же формат / логику, что и я. В строке "using (streamCommunities = request.EndGetRequestStream (asyncResult)))" он выдает ошибку, которую я прикрепил внизу, ArgumentException, говорящую, что ему не нравится asyncResult. Почему, если в каждом другом примере, который я нашел, используется та же логика?

    private void GetSource(object state)
    {
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(MyValidUri));
    request.Method = "POST";
    request.ContentType = "application/json";
    request.BeginGetResponse(new AsyncCallback(ReadCommunityCallBack), request);
    }

    private void ReadCommunityCallBack(IAsyncResult asyncResult)
    {            
        HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;

        using (Stream outStream = request.EndGetRequestStream(asyncResult))
        {
          // DO STUFF HERE
        }
    }

И ошибка здесь:

System.ArgumentException was unhandled by user code
Message=Value does not fall within the expected range.
   StackTrace:
   at System.Net.Browser.ClientHttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult)
   at cenTabbedFeed.MainPage.ReadCommunityCallBack(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClass1a.<InvokeGetResponseCallback>b__18(Object state2)
   at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

Как я уже говорил, я искал примеры и пытался найти ответ на MSDN, и я застрял и разочарован.

-Спасибо заранее RJ

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Ваш метод запроса POST, но вы ничего не публикуете.Либо напишите что-нибудь в RequestStream, либо измените свой метод на GET.

- EDIT -

Вы можете отправить некоторую строку на сервер, как показано ниже

byte[] buf = Encoding.UTF8.GetBytes("key=value&key2=value2&key3=value3");
request.ContentType = "application/www-form-urlencoded";
request.ContentLength = buf.Length;
request.GetRequestStream().Write(buf,0,buf.Length);
0 голосов
/ 24 апреля 2012

Уве ошибся. Ура, используя BeginGetResponse. У меня просто была такая же проблема в ACW. изменил вместо этого BeginGetRequestStream, все хорошо :) 1003 *

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