2009-10-08 13 views
5

私はhere https投稿を作成する方法を尋ねましたが、今はうまくいきます。Https POSTでパラメータを送信する方法C#

:問題は今、パラメータ、名前クエリを送信する方法で、ウィッヒはJSON文字列である{ "キー1": "VALUE1"、 "KEY2":{ "key21": "val21を"}}

何私はしていて動作しません:

HttpWebRequest q = (HttpWebRequest)WebRequest.Create(Host + ":" + Port); 
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications); 
q.Method = "POST"; 
q.ContentType = "application/json"; 
q.Headers.Add("JSON-Signature", GetFirma(query)); 
q.Credentials = new NetworkCredential(user,pass); 

byte[] buffer = Encoding.UTF8.GetBytes("query=" + query); 

q.ContentLength = buffer.Length; 

using (Stream stream = q.GetRequestStream()) 
{ 
    stream.Write(buffer, 0, buffer.Length);      
} 

しかし、サーバーは、常に 'クエリ'パラメータがないと答えるです。どんな助け?

ありがとうございます!

+0

サーバは多分URLにクエリパラメータを期待していませんか? http:// host /?query = xyz – Lucero

+0

これは、サーバー開発者によって提供された唯一の例がPHP(最初の質問のコード)であったため、わかりません –

+0

参照:http://marcgravell.blogspot .com/2009/10/pass-data-simply-learning-jquery.html –

答えて

9

私はWebClient.UploadValuesを使用します。

 using (WebClient client = new WebClient()) 
     { 
      NameValueCollection fields = new NameValueCollection(); 
      fields.Add("query", query); 
      byte[] respBytes = client.UploadValues(url, fields); 
      string resp = client.Encoding.GetString(respBytes); 
     } 
+0

ありがとうございましたが、コードと同じ回答が得られました。私はサーバー開発者にもっとフィードバックを求めてみるつもりです。 –

+0

さて、私はそれをローカルで試して、うまくいくので、互換性の問題などが似ている必要があります。 –

+0

このコードはリクエストを2回投稿しませんか? client.UploadValues(url、fields)を呼び出しています。二度。 –

関連する問題