2011-08-13 138 views
0

我试图用HTTP服务器连接并发送一些日期。我的代码看起来像 - >发送POST数据

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.dll中发生第一次机会异常'System.Net.WebException'

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

,但反应就像

Array 
(
) 
NativeHost 

在此先感谢您的帮助:)

编辑: OK,我理解了它;)一切工作;)

回答

1

谷歌不接受POST请求。我不知道WP7,但如果你使用相同的代码创建一个简单的控制台应用程序,你会得到一个例外情况,即post方法是不允许的。

+0

它帮助了一点:/现在我收到我的PHP脚本,但POST和我送空头回应:/(我编辑我的问题)。 –

0

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

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);