2011-08-13 19 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:Iveには7.1 SDK Betaがインストールされていますが、7.0エミュレータ(Target windows phone verisonはWP7)で動作するはずです。

EDIT:

今すぐコードが

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 
のようなものですあなたの助けを事前に感謝

:)

EDIT: OKが、私はそれを考え出し;)すべてが働いている;)

答えて

1

GoogleはPOSTリクエストを受け付けません。 WP7についてはわかりませんが、同じコードを持つ単純なコンソールアプリケーションを作成した場合は、POSTメソッドが許可されないという例外があります。

+0

です。 –

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呼び出しが完了した後に呼び出されるメソッドです。このクラスを使用すると、ファイルを簡単に送信できます。

0

WebClientクラスはGETメソッドを内部的に使用するため、HttpWebRequestクラスとHttpWebResponseクラスを使用する必要があります。 /今、私は私のPHPスクリプトからの応答を受け取るが、POSTと私は送信されヘッダが空である:/(私は私の質問を編集した)。ここ は、それは少しを助けた小さなスニペット

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