経緯 C#からAPIサーバーにPOSTを投げようと思い検索していたところ、HttpWebRequestを使う例ばかりでてきて残念な感じがした。 今回はHttpClientを使ってPOSTを投げるコードを書いてみます。 目的 C#から特定のHTTPサーバーにPOSTを投げる HttpWebRequestを使ったときの残念に感じた点 HTTPメソッドを文字列で指定 httpRequest.Method = "POST"; みたいな リクエストのパラメータを文字列連結で生成 String params = "hoge=" + param_hoge + "&fuga=" + param_fuga; みたいな 生成したパラメータをストリームに流す var stream = httpRequest.GetRequestStream(); StreamWriter writer = new Stream
.NET Framework4.5からSystem.Net.Http名前空間にHttpClientクラスが追加されている。 今までHttpWebRequestを使ってごにゃごにゃしてたんだけど、気になってどんな物か使ってみた。 htmlとってくるだけじゃ1行で終わってしまうので、idやpassword使ってのログインをやってみた。 var http = new HttpClient(); http.DefaultRequestHeaders.ExpectContinue = false; var content = new FormUrlEncodedContent(new Dictionary() { { "id", "hoge" }, { "pass", "piyo" } }); var res = await http.PostAsync("http://www.xxx.com/lo
UrlEncode をキャラクタセットを指定して送れるようになっています。受信データは、Content-Type でキャラクタセットが指定されておれば、自動的に変換されています。 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; namespace winofsql { class Tool { // 戻される文字列は、サーバー側で Content-Type に Charset が // 指定されておれば自動変換されます // *********************
拡張子:using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace LBOX_Http { public class Lbox { public static async Task<string> Post(string url, Dictionary<string, string> param) { string result = ""; try { HttpClient httpClient = new HttpClient(); httpClient.MaxResponseContentBufferSize = int.MaxValue; HttpC
以前見かけたコードの中に「ラムダ式からPOSTメソッドのパラメータを生成する」というメソッドがあり、非常に便利なので多少手を加えたものを流用させてもらっている。 private static FormUrlEncodedContent CreatePostContent(params Expression<Func<Object, Object>>[] exprs) { var contents = new List<KeyValuePair<string, string>>(); foreach (var expr in exprs) { var obj = expr.Compile().Invoke(null); if (obj == null) continue; if (obj is Byte[]) { contents.Add(new KeyValuePair<string, s
SlideShare で HttpClient のスライドを見つけました。.NETFramework 4.0 であれば、通常 WebClient を使用するかと思います。neuecc さんのスライドにある通り、WebRequest クラスを利用して、POST処理とかやろうとすると下記のような感じになります。※ソースコードはここから引用しました。 --------- using System; using System.IO; using System.Net; using System.Web; using System.Text; using System.Collections; namespace ConsoleApplication { public class GoogleTranslate { static void Main() { Encoding enc = Encodi
HttpClientクラスでWebページの内容を文字列として取得する端的なコード例(上:C#、下:VB) 端的にはこの1行だけで、Webページの内容を文字列として取得できる。 HttpClientクラスを利用する前に、プロジェクトの参照設定にSystem.Net.Httpアセンブリを追加し、ソースコードの先頭でSystem.Net.Http名前空間をインポートしておく。 HttpClientクラスのGetStringAsyncメソッドは非同期に実行されるメソッドであり、この例のようにawait(C#)/Await(VB)キーワードが必要だ。また、このコードを含むメソッドのシグネチャにはasync/Asyncキーワードを付ける必要がある*1。これまでのWebClientクラスなどを使った実装では、UIをフリーズさせないために非同期処理を書くのは少々面倒だった。非同期対応したことも、HttpC
NuGet で公開されていた System.Net.Http.dll が .NET Framework 4.5 では BCL 入りを果たしました。このアセンブリには HttpClient という全く新しい HTTP のクライアントが入っています。 これって元々は ASP.NET Web API 向けに HTTP を綺麗にラップしたクラスなんですが、正直なところ WebClient とかそんなレベルじゃないぐらい高機能で使い勝手がいいんですよ。 REST 対応 HttpClient に用意されている主な HTTP 通信用のメソッドは以下の通りです。 GetAsync PostAsync PutAsync DeleteAsync はい、見事に HTTP 動詞です。これで RESTful な API でも簡単に叩くことが出来るし、HttpWebRequest で何故か HTTP 動詞を文字列で指
アプリのモダン化とそれを実現する技術としての.NET Framework:連載:Visual Studio 2013対応フレームワーク「.NET 4.5.1」解説(3/3 ページ) モダンなアプリを開発するために知っておきたい要素 上では、.NET Framework 4.5/4.5.1では各要素がどのようなポジションに位置付けられるかを見た。重要なのは、多くの「デバイス」が「サービス」を利用することでリッチなユーザー体験を得られるようになるということだ。これを実現するために.NET Frameworkでは各種のテクノロジが階層化されて存在している。 こうした状況でマイクロソフトが言うところの「モダン」なアプリを作るには、どんな要素について知っておいた方がよいか、筆者個人が気になっているところをいくつか紹介しよう。 HttpClientクラス HttpClientクラス(System.Ne
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く