.NET POST на страницу PHP
Я пытаюсь реализовать очень простую систему из моего приложения на C# .NET, которая отправляет IP-адрес компьютера для authenticate.php на моем веб-сервере. Страница php проверит этот IP-адрес в базе данных и ответит "да" или "нет".
Прошло много времени с тех пор, как я работал с PHP, и я немного запутался. Вот как выглядит моя.NET-функция.
public static bool IsAuthenticated()
{
string sData = getPublicIP();
Uri uri = new Uri("http://www.mysite.com/authenticate.php");
if (uri.Scheme == Uri.UriSchemeHttp)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Post;
request.ContentLength = sData.Length;
request.ContentType = "application/x-www-form-urlencoded";
// POST the data to the authentication page
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(sData);
writer.Close();
// Retrieve response from authentication page
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string sResponse = reader.ReadToEnd();
response.Close();
if (sResponse == "yes")
{
Console.WriteLine("Authentication was Successful.");
return true;
}
else
{
Console.WriteLine("Authentication Failed!");
return false;
}
}
}
Так будет ли переменная POST $_POST['sData']; и как мне ответить на мою заявку с результатом?
1 ответ
Принимая значение sData
является (скажем) "10.1.1.1", то вы в настоящее время не публикуете правильные данные формы в первую очередь. Имя переменной не является частью текста, написанного
writer.Write(sData);
Вам нужно сделать что-то вроде:
string postData = "ipaddress=" + sData;
а затем использовать ipaddress
параметр формы в вашем PHP.
Также обратите внимание, что вы должны указывать длину двоичного содержимого, которая может не совпадать с длиной строки в символах. Конечно, это нормально, если строка здесь полностью ASCII, что я ожидаю, если это IP-адрес... но это стоит иметь в виду для других целей. (Точно так же вы обычно должны иметь в виду любые символы, которые нуждаются в специальной кодировке.)
Также обратите внимание, что было бы лучше использовать using
заявления для StreamWriter
, HttpResponse
и т.д., чтобы убедиться, что все закрывается, даже если выдается исключение.