发送POST数据
我正在尝试连接HTTP服务器并发送一些日期。我的代码看起来像->发送POST数据,post,windows-phone,windows-phone-7.1,Post,Windows Phone,Windows Phone 7.1,我正在尝试连接HTTP服务器并发送一些日期。我的代码看起来像-> public MainPage() { InitializeComponent(); WebClient client = new WebClient(); Uri uri = new Uri("http://google.pl"); string data = "Time = 12:00am temperature = 50"; client.UploadStringCompleted +
public MainPage()
{
InitializeComponent();
WebClient client = new WebClient();
Uri uri = new Uri("http://google.pl");
string data = "Time = 12:00am temperature = 50";
client.UploadStringCompleted += new UploadStringCompletedEventHandler (UploadStringCallback2);
client.UploadStringAsync(uri, data);
}
private static void UploadStringCallback2(Object sender, UploadStringCompletedEventArgs e)
{
string reply = (string)e.Result;
Console.WriteLine(reply);
}
我收到异常“远程服务器返回错误:NotFound”。我的调试窗口如下所示
Uri uri = new Uri("MY SITE");
string data = "text=dupa";
//client.Encoding = System.Text.Encoding.UTF8;
var headers = new WebHeaderCollection();
headers[0] = " User-Agent: CERN-LineMode/2.15 libwww/2.17b3";
client.Headers = headers;
client.UploadStringCompleted += new UploadStringCompletedEventHandler(UploadStringCallback2);
client.UploadStringAsync(uri, data);
System.Windows.dll中发生了类型为“System.Net.WebException”的第一次意外异常
System.Windows.dll中发生了类型为“System.Net.WebException”的第一次意外异常
System.dll中发生了类型为“System.Net.WebException”的第一次意外异常
请帮忙!
PS:我已经安装了7.1 SDK测试版,但它应该在7.0模拟器上运行(目标windows phone verison是WP7)
编辑:
现在代码看起来像
Uri uri = new Uri("MY SITE");
string data = "text=dupa";
//client.Encoding = System.Text.Encoding.UTF8;
var headers = new WebHeaderCollection();
headers[0] = " User-Agent: CERN-LineMode/2.15 libwww/2.17b3";
client.Headers = headers;
client.UploadStringCompleted += new UploadStringCompletedEventHandler(UploadStringCallback2);
client.UploadStringAsync(uri, data);
它连接到我的PHP脚本
<?php
print_r($_POST);
print_r($_SERVER[HTTP_USER_AGENT]);
?>
提前感谢您的帮助:)
编辑:
好吧,我想出来了;)一切正常;) 谷歌不接受POST请求。我不知道WP7,但是如果您使用相同的代码创建一个简单的控制台应用程序,您会得到一个例外,即不允许使用post方法。尝试使用简化HTTP调用的此类: (链接到我的codeplex项目) 用法:
var request = new PostRequest("http://myurl.ch");
request.Data.Add("name", "myname");
request.Data.Add("email", "myemail);
Http.Post(request, OnSendCompleted, Deployment.Current.Dispatcher);
OnSendCompleted
是在HTTP调用完成后调用的方法。有了这个类,发送文件也很容易 WebClient类在内部使用GET方法,您必须使用HttpWebRequest和HttpWebResponse类。
下面是一个小片段
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.foo.com");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
string postData = "parameter=value";
// Getting the request stream.
request.BeginGetRequestStream
(result =>
{
// Sending the request.
using (var requestStream = request.EndGetRequestStream(result))
{
using (StreamWriter writer = new StreamWriter(requestStream))
{
writer.Write(postData);
writer.Flush();
}
}
// Getting the response.
request.BeginGetResponse(responseResult =>
{
var webResponse = request.EndGetResponse(responseResult);
using (var responseStream = webResponse.GetResponseStream() )
{
using (var streamReader = new StreamReader(responseStream))
{
var result = streamReader.ReadToEnd();
}
}
}, null);
}, null);
这有点帮助:/现在我收到了来自PHP脚本的响应,但我发送的帖子和标题是空的:/(我编辑了我的问题)。