• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#でのWebRequestでのPOSTについて)

C#でのWebRequestでのPOSTについて

このQ&Aのポイント
  • C#でのWebRequestを使用してPOSTリクエストを行う方法について悩んでいます。Visual Studio2012でC#のストアアプリを作成しており、サーバーからリストを取得するためにPOSTリクエストを行う必要があります。
  • この問題に対して、WebRequestのContentLengthプロパティが見つからないというエラーが表示されています。どのような追加のアセンブリを指定しなければならないのか、わかりません。
  • どなたか、C#のWebRequestを使用してPOSTリクエストを行った経験がある方、または同様のエラーに直面したことのある方からの助言をお待ちしています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Windows Store AppsではContentLengthプロパティは使えませんね。 利用可能な,ContentTypeプロパティには存在する, http://msdn.microsoft.com/ja-jp/library/system.net.httpwebrequest.contenttype.aspx > 汎用性のあるクラス ライブラリ > サポート対象 : 汎用性のあるクラス ライブラリ という記述が,ContentLengthプロパティには存在しません。 http://msdn.microsoft.com/ja-jp/library/system.net.httpwebrequest.contentlength.aspx Content-Lengthフィールド自体は,Streamに出力すればちゃんと設定されるため, 設定自体をしないでもよい,というのが解決方法になるかと思います。 > それと、こういう処理をしたい時はどのnamespaceを使用するなどは > どのように参照してらっしゃいますか? 名前空間が分割されていることやその名前には意味があるので,だいたいで予想してMSDNを見る事が多いです。 今回の場合だと,System.Net名前空間なのはわかっているので,そこを起点としてMSDNを見てまわります。 http://msdn.microsoft.com/ja-jp/library/gg145039.aspx ちなみに, HttpClientクラスなんてのも存在します。 http://msdn.microsoft.com/ja-jp/library/system.net.http.httpclient.aspx こういう新規の情報の仕入れは,各種blogや勉強会,TwitterのTLなどですね。 書籍も情報源になりますが,そもそも情報源になるような書籍が少ないという難点があります。 あと,掲示板を巡回しているとたまに知らない情報が出てきていたりもします。 まぁ,HttpClientについてはSystem.Net.Httpなんていう「いかにも」な名前空間なので,MSDNから探せなくもないですが……。

bgbwq712
質問者

お礼

ご回答ありがとうございます。 C#のサンプル等をネットで見つけて試しているのですが、 そのままではエラーが表示される事が多いです。 Windows Store Appsでは使用できない事があるみたいですね・・・ 情報が少ないですがなんとか頑張りたいと思います。 MSDNの参照についてもありがとうございました! ついでといっては何ですが、サーバーからJsonデータを取得までは できたのですが、Jsonデータを配列にしてarray['key']みたいに参照するには どうしたらいいですかね? Windows.Data.Jsonを使用する所まではわかってますが なかなか動くソースをみつけきれてません。

その他の回答 (1)

回答No.1

ContentLengthはHttpWebRequestのプロパティです。 WebRequest.Createの戻り値をHttpWebRequestにキャストするかCreateHttpメソッドを使って下さい。 また,requestの型もHttpWebRequestにする必要があります。

bgbwq712
質問者

お礼

返答遅くなってすみません。 下記のとおり修正しなおしましたがContentLengthのエラーは表示されたままです。 HttpWebRequest request = HttpWebRequest.CreateHttp("URL"); request.Method = "POST"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; それと、こういう処理をしたい時はどのnamespaceを使用するなどは どのように参照してらっしゃいますか?

関連するQ&A