LoginSignup
0
0

More than 5 years have passed since last update.

ASP.NET > http > httpClient

Posted at

参考

HttpClient

HttpClientの類の使い方 - マイクロソフト系技術情報 Wiki
開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント

jsonパース関係

Json.NET (Newtonsoft.Json) の基本的な使い方 | @Subaru
Querying JSON with LINQ

httpClient

以下、IBMのlanguage-translatorを使うサンプルです


using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;


using Newtonsoft.Json.Linq;
using System.Net.Http.Formatting;

namespace FeedReader
{

    public class TransMessage
    {
        public string text { get; set; }
        public string source { get; set; }
        public string target { get; set; }
    }



    public class WatsonTranslator
    {

        private static HttpClient _httpClient = new HttpClient();
        private const string userName = "";
        private const string passWord = "";
        private const string url = "https://gateway.watsonplatform.net/language-translator/api/v2/translate";


        public async static Task<dynamic> Load()
        { 
            var msg = new TransMessage();
            msg.text = "Hello";
            msg.source = "en";
            msg.target = "ja";
            string json = Newtonsoft.Json.JsonConvert.SerializeObject(msg);

            var result = await PostAsyncToWatson(json);
            return result;
        }


        /// <summary>
        /// 
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public async static Task<string> PostAsyncToWatson(string json)
        {
            //送信オプション
            _httpClient.DefaultRequestHeaders.Clear();

            //認証方式をセット - Basic認証
            var userPass = System.Text.Encoding.ASCII.GetBytes($"{userName}:{passWord}");
            _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(userPass));

            //Accept(要求)方式をセット
            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //content作成
            var content = new ByteArrayContent(System.Text.Encoding.UTF8.GetBytes(json));
            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            //Post送信
            var response = await _httpClient.PostAsync(url, content);

            //応答を取得しJsonに変換
            //var responseResult = await response.Content.ReadAsStringAsync();
            JObject jres = await response.Content.ReadAsAsync<JObject>(new[] { new JsonMediaTypeFormatter() });

            //translationsの情報をArrayで取得
            var jarr = jres["translations"] as JArray;
            var translation = jarr.First;

            //translationを取得
            var nameValue = translation["translation"] as JValue;
            var result = nameValue.Value as string;


            //応答
            return result;
        }


    }

}


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0