C# wp8 HttpWebRequest POST未发送POST值
我在发送post值时遇到了一个HttpWebRequest,我不知道问题出在哪里 希望有人能在这方面帮助我 这是我的密码C# wp8 HttpWebRequest POST未发送POST值,c#,windows-phone-7,post,windows-phone-8,httpwebrequest,C#,Windows Phone 7,Post,Windows Phone 8,Httpwebrequest,我在发送post值时遇到了一个HttpWebRequest,我不知道问题出在哪里 希望有人能在这方面帮助我 这是我的密码 private async void loggingIn(string url, string postdata) { if (NetworkInterface.GetIsNetworkAvailable()) { try { var request = W
private async void loggingIn(string url, string postdata)
{
if (NetworkInterface.GetIsNetworkAvailable())
{
try
{
var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
request.Method = "POST";
byte[] data = Encoding.UTF8.GetBytes(postdata);
request.ContentLength = data.Length;
using (var requestStream = await Task<Stream>.Factory.FromAsync(request.BeginGetRequestStream, request.EndGetRequestStream, request))
{
await requestStream.WriteAsync(data, 0, data.Length);
}
WebResponse responseObject = await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, request);
var responseStream = responseObject.GetResponseStream();
var sr = new StreamReader(responseStream);
string received = await sr.ReadToEndAsync();
MessageBox.Show(received);
}
catch
{
}
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string url = "localhost/test.php";
string password = passwordBoxLogin.Password;
string username = usernameBoxLogin.Text;
string postdata = "password=" + password +"&username="+username;
loggingIn(url,postdata);
}
private异步void登录(字符串url、字符串postdata)
{
if(NetworkInterface.GetIsNetworkAvailable())
{
尝试
{
var request=WebRequest.Create(新Uri(url))作为HttpWebRequest;
request.Method=“POST”;
byte[]data=Encoding.UTF8.GetBytes(postdata);
request.ContentLength=data.Length;
使用(var requestStream=await Task.Factory.fromsync(request.BeginGetRequestStream,request.EndGetRequestStream,request))
{
wait requestStream.WriteAsync(数据,0,数据.Length);
}
WebResponse responseObject=await Task.Factory.FromAsync(request.BeginGetResponse,request.EndGetResponse,request);
var responseStream=responseObject.GetResponseStream();
var sr=新的StreamReader(responseStream);
接收到字符串=等待sr.ReadToEndAsync();
MessageBox.Show(已接收);
}
抓住
{
}
}
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
字符串url=“localhost/test.php”;
字符串password=passwordBoxLogin.password;
字符串username=usernameBoxLogin.Text;
字符串postdata=“password=“+password+”&username=“+username;
登录(url、postdata);
}
问题是我的服务器没有从POST请求接收任何值。
但我确实收到了服务器的响应
这就是我用来检查php服务器上的代码的方法
<?php
echo $_POST['username'];
echo"-";
echo $_POST['password'];
?>
我得到的唯一回报就是-
提前感谢您帮助我:)
它刚刚开始工作,没有任何变化
目前案件已结案 我这样修改了你的代码 希望它确实对你有用
private void Button_Click(object sender, RoutedEventArgs e)
{
string url = "localhost/test.php";
string password = passwordBoxLogin.Password;
string username = usernameBoxLogin.Text;
string postdata = "password=" + password +"&username="+username;
bool isNetwork = NetworkInterface.GetIsNetworkAvailable();
if (!isNetwork)
{
}
else
{
try
{
WebClient webClient = new WebClient();
webClient.Headers["Content-Type"] = "application/json"; // Your Application Header Content-Type
webClient.Encoding = Encoding.UTF8;
webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(proxy_UploadStringCompleted);
webClient.UploadStringAsync(new Uri(url ), "POST", postdata ,null);
}
catch
{
}
}
}
private void proxy_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
var response = e.Result;
}
试试这个。这可能对你有帮助
private async void loggingIn(string url, string postdata)
{
if (NetworkInterface.GetIsNetworkAvailable())
{
try
{
var request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.Accept = "application/json";
request.ContentType = "application/json";
request.BeginGetRequestStream(loginRequest, request);
}
catch(Exception ex)
{
}
}
private void loginRequest(IAsyncResult asyncResult)
{
string postdata = "password=" + password +"&username="+username;
UTF8Encoding encoding = new UTF8Encoding();
HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
Stream _body = request.EndGetRequestStream(asyncResult);
byte[] formBytes = encoding.GetBytes(postdata);
_body.Write(formBytes, 0, formBytes.Length);
_body.Close();
request.BeginGetResponse(loginResponse, request);
}
private void loginResponse(IAsyncResult asyncResult)
{
try
{
HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
HttpWebResponse httpResponse = (HttpWebResponse)response;
using (Stream data = response.GetResponseStream())
using (var reader = new StreamReader(data))
{
string received = await reader.ReadToEndAsync();
MessageBox.Show(received);
}
}
catch(Exception ex)
{
}
}