Xamarin отправляет данные POST - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь отправить данные POST на мой сервер и получить ответ. По какой-то причине данные POST фактически не отправляются. Запрос отправляется на мой сервер, но массив POST пуст.

Вот мой код для отправки запроса:

public class GlobalMethods
{
    public async Task<string> callAjax(string mthd,NameValueCollection parameters)
    {
        var client = new HttpClient();
        var content = JsonConvert.SerializeObject(parameters);

        var result = await client.PostAsync("http://dev.adex-intl.com/adex/mvc/receiving/"+mthd, new StringContent(content)).ConfigureAwait(false);
        var tokenJson = "";

        if (result.IsSuccessStatusCode)
        {
            tokenJson = await result.Content.ReadAsStringAsync();
        }
        return tokenJson;
    }
}

А вот мой код, который вызывает вышеуказанный метод:

public void loginPressed(object sender, EventArgs e)
    {
        if(String.IsNullOrEmpty(badge.Text)) {
            DisplayAlert("Error", "Enter your badge number", "Ok");
        } else {
            IsBusy = true;
            NameValueCollection parameters = new NameValueCollection();
            parameters["badgetNumber"] = badge.Text;
            GlobalMethods globalMethods = new GlobalMethods();
                var results = globalMethods.callAjax("login", parameters);
        }
    }

Я не уверен, что делаю не так. Кроме того, я новичок в Xamarin и C #, поэтому я даже не уверен, является ли способ, которым я пытаюсь что-то делать, лучшим способом.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Вы можете использовать PostAsync для асинхронной отправки данных на сервер.ваш код должен выглядеть примерно так:

HttpClient client = new HttpClient();
var values = new Dictionary<string, string>
{
   { "p1", "data1" },
   { "p2", "data2" }
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("http://www.example.com/index.php", content);
var responseString = await response.Content.ReadAsStringAsync();
0 голосов
/ 14 мая 2018

Вы не указали тип контента, который хотите отправить, в вашем случае это «application / json», вы можете установить его так: "var client = new HttpClient(); var content = new StringContent(JsonConvert.SerializeObject(parameters)); content.Headers.ContentType = new MediaTypeHeaderValue("application/json");". Кроме того, я бы посоветовал вам написать такой код:

 var uri = new Uri(url);
 using (var body = new StringContent(JsonConvert.SerializeObject(data)))
 {
    body.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    var request = new HttpRequestMessage
    {
       Version = new Version(1, 0),
       Content = body,
       Method = HttpMethod.Post,
       RequestUri = uri
    };

    try
    {
        using (var response = await _client.SendAsync(request,cancellationToken))
        {
           if (response.IsSuccessStatusCode)
           {
              //Deal with success response
           }
           else
           {
              //Deal with non-success response
           }               
        }
    }
    catch(Exception ex)
    {
        //Deal with exception.
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...