0

我正在尝试连接 HTTP 服务器并发送一些日期。我的代码看起来像->

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。” 我的调试窗口看起来像

System.Windows.dll 中发生“System.Net.WebException”类型的第一次机会异常 System.Windows.dll 中发生“System.Net.WebException”类型的第一次机会异常 System.Net 类型的第一次机会异常.WebException' 发生在 System.dll

请帮忙!PS:我已经安装了 7.1 SDK Beta,但它应该在 7.0 模拟器上运行(目标 windows phone 版本是 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]);
?>

但反应就像

Array
(
)
NativeHost

在此先感谢您的帮助 :)

编辑: 好的,我想通了;)一切正常;)

4

3 回答 3

1

Google 不接受 POST 请求。我不了解 WP7,但是如果您使用相同的代码创建一个简单的控制台应用程序,您会得到不允许使用 post 方法的异常。

于 2011-08-13T09:01:32.120 回答
0

试试这个简化 HTTP 调用的类: https ://mytoolkit.codeplex.com/wikipage?title=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 调用完成后调用的方法。有了这个类,发送文件也很容易。

于 2011-09-07T16:00:41.413 回答
0

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);
于 2011-12-08T07:38:03.220 回答