2013-07-19 2 views
0

Я переписываю WebAppication для собственного приложения на Windows Phone.AJAX vs HTTPRequest

У меня возникли проблемы, я не могу опубликовать данные.

Вот код для WebApplication - это работает:

$.ajax({ 
     url: 'https://blabla.blabla.com/mobile-api/v1/security', 
     contentType: 'application/json', 
     // data: JSON.stringify ({"jsonrpc": "2.0", "method": "login", "params":["TestLogin", "SuperPass"], "id": 1}), 
     data: JSON.stringify({"jsonrpc": "2.0", "method": "login", "params":[username, password], "id": 1}), 
     type:"POST", 
     success: function(data){ 
      callback.onSuccess(data); 
     }, 
     error: function(xhr){ 
      callback.onError(xhr.status); 
     } 
    }); 

А вот мой C# код:

private void PostLoginData() 
    { 
     HttpWebRequest request = HttpWebRequest.CreateHttp("https://blabla.blabla.com/mobile-api/v1/security"); 
     request.Method="POST"; 
     request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback),request); 
    } 
    void GetRequestStreamCallback(IAsyncResult callbackResult) 
    { 
     HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; 
     // End the stream request operation 
     Stream postStream = myRequest.EndGetRequestStream(callbackResult); 

     // Create the post data 
     string postData = "{\"jsonrpc\": \"2.0\", \"method\": \"login\", \"params\":{\"username\":" + "\"TestLogin\"" + ", \"password\":" + "\"SuperPass\"" + "}, \"id\": 1}"; 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

     // Add the post data to the web request 
     postStream.Write(byteArray, 0, byteArray.Length); 
     postStream.Close(); 

     // Start the web request 
     myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest); 
    } 
    void GetResponsetStreamCallback(IAsyncResult callbackResult) 
    { 
     HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState; 
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult); 
     using (StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream())) 
     { 
      string result = httpWebStreamReader.ReadToEnd(); 
      //For debug: show results 
      Deployment.Current.Dispatcher.BeginInvoke(() => 
      { 
       MessageBox.Show(result); 
      }); 
     } 
    } 

Response возвращает меня:

Неверные параметры метода.

Если я попытаюсь отправить логин и пароль без "", например, так:

string postData = "{\"jsonrpc\": \"2.0\", \"method\": \"login\", \"params\":{\"username\":" + "TestLogin" + ", \"password\":" + "SuperPass" + "}, \"id\": 1}"; 

Response является:

Ошибка синтаксического анализа

Логин и Пароль 100% правильно ... проблема, о которой я думаю, находится в данных поста, потому что работает запрос WebApplications

ответ

1

Правильная строка должна быть:

string postData = "{\"jsonrpc\": \"2.0\", \"method\": \"login\", \"params\":[" + "\""+Username+"\"" + "," + "\""+UserPassword+"\"" + "], \"id\": 1}";