我正在尝试从 xamarin android c# 向外部 PHP 脚本发送数据
Am trying to send data to an external PHP script from xamarin android c#
下面是我的代码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;
}
但我在下面的这一行中收到错误消息 Java.net.protocol: Unexpected status line "Y. "
var response = await
client.PostAsync("Http://10.0.2.2:3307/login.php", content);
我设法解决了问题:
问题是我尝试连接到错误的端口并将其从 3307 更改为 80,而且 android 模拟器使用与 xampp 相同的 IP 地址,所以我不得不查看有关如何连接到外部本地服务器的文档。您可以在这里查看:
https://developer.android.com/studio/run/emulator-networking
而且我使用 json 来解析用户模型 class 而不是使用 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;
}
下面是我的代码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;
}
但我在下面的这一行中收到错误消息 Java.net.protocol: Unexpected status line "Y. "
var response = await
client.PostAsync("Http://10.0.2.2:3307/login.php", content);
我设法解决了问题:
问题是我尝试连接到错误的端口并将其从 3307 更改为 80,而且 android 模拟器使用与 xampp 相同的 IP 地址,所以我不得不查看有关如何连接到外部本地服务器的文档。您可以在这里查看:
https://developer.android.com/studio/run/emulator-networking
而且我使用 json 来解析用户模型 class 而不是使用 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;
}