做一个将textBox中的文本传送给服务器,然后服务器上的php文件将之储存至数据库中的应用
下面是代码。
private void launch_Click(object sender, RoutedEventArgs e)
{
string url = "http://asdf.com/SecondTest.php";//这里是php文件所在的位置
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.BeginGetRequestStream(getRequestCallBack, myRequest);
}
private void getRequestCallBack(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
Dispatcher.BeginInvoke(() =>//之所以使用beginInvoke的意义在于下面读取了一个TextBox的Text属性,在WP8中需要使用这个
{
string postStr = "textContent=" + newTextMessage.Text;
using (Stream stream = request.EndGetRequestStream(result))
{
Byte[] postByte;
postByte = Encoding.UTF8.GetBytes(postStr);
stream.Write(postByte, 0, postByte.Length);
}
});
request.BeginGetResponse(ResponseCallback, request);
//返回应答请求异步操作的状态
}
//下面是从服务器获得数据,以此来检验是否传上去了,当然了,服务器要echo出刚才传入的东西
private void ResponseCallback(IAsyncResult result)
{
string response = null;
Stream stream = null;
try
{
//获取异步操作返回的的信息
HttpWebRequest httpWebRequest = (HttpWebRequest)result.AsyncState;
//结束对 Internet 资源的异步请求
WebResponse webResponse = httpWebRequest.EndGetResponse(result);
stream = webResponse.GetResponseStream();
using (StreamReader sr = new StreamReader(stream))
{
response = sr.ReadToEnd();
}
}
catch { }
finally
{
if (stream != null)
{
stream.Close();
}
}
//这里不为空代表获得回复了
if (response != null)
{
//因为HttpWebRequest是异步,不在UI线程上。所以要改变UI线程上的控件属性就要用Dispatcher.BeginInvoke()。
Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(response);
});
}
}
}
放php代码在这儿:
<?php
header("Content-type:application/x-www-form-urlencoded; charset=utf-8");
$a=$_POST["userName"];//以此来接收POST得到的数据
$con=mysql_connect("localhost","verssageli","password");
mysql_query("set character set 'utf-8'");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("verssageli",$con);
mysql_query("INSERT INTO postcontent (username) VALUES ('$a')");//向postcontent表中的username栏插入$a的值
echo $a;//输出$a
mysql_close($con);
?>