Я переписываю 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