Пытаюсь отправить данные на внешний PHP скрипт из xamarin android c# - PullRequest
0 голосов
/ 02 мая 2020

Это мой код ниже login.cs

var user = User.Text;
var pass = Pass.Text;
 try
    {

        var postData = new List<KeyValuePair<string, string>>();
        postData.Add(new KeyValuePair<string, string>("username", user));
        postData.Add(new KeyValuePair<string, string>("password", pass));

        var content = new FormUrlEncodedContent(postData);

        HttpClient client = new HttpClient();

        client.BaseAddress = new Uri("Http://10.0.2.2:3307");

        var response = await client.PostAsync("Http://10.0.2.2:3307/login.php", content);
        result = response.Content.ReadAsStringAsync().Result;

    }
    catch (Exception ex)
    {
        await DisplayAlert("Error", ex.ToString(), "Ok");
        return;
    }

Но в этой строке я получаю сообщение об ошибке: 1004 *Java. net .protocol: Неожиданная строка состояния "Y".

    var response = await 
    client.PostAsync("Http://10.0.2.2:3307/login.php", content);

1 Ответ

0 голосов
/ 04 мая 2020

Мне удалось решить проблему:

Проблема заключалась в том, что я попытался подключиться к неправильному порту и изменил его с 3307 на 80, а также эмулятор android использует тот же IP-адрес, что и xampp, поэтому я должен был проверить документацию о том, как подключиться к внешнему локальному серверу. Вы можете проверить здесь:

https://developer.android.com/studio/run/emulator-networking

И я использовал json для анализа класса пользовательской модели вместо использования KeyValuePair, потому что он не работал также .

var user = User.Text;
var pass = Pass.Text;
try{

    User us = new User();
    us.username = user;
    us.password = pass;

    string json = JsonConvert.SerializeObject(us);

    var content = new StringContent(json, Encoding.UTF8, "application/json");

    HttpClient client = new HttpClient();

    Uri uri = new Uri("Http://10.0.2.2:80/api/login.php");       

    client.BaseAddress = new Uri("Http://10.0.2.2:80");

    HttpResponseMessage response = await client.PostAsync(uri, cont);
    string  result =  await response.Content.ReadAsStringAsync();
    result = result.Trim('[', ']');

    dynamic output = JsonConvert.DeserializeObject(result);

}
catch (Exception ex)
{
    await DisplayAlert("Error", ex.ToString(), "Ok");
    return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...