備忘録

備忘録

.NET Core HttpClientでproxyを利用する

Ⅰ. はじめに

.NET CoreではWebProxyクラスは存在しません。
代わりにIWebProxyを継承して自分でクラスを作る必要があります。

※2017/05/30 追記
.NET Core 2.0 でWebProxyクラスが追加されました。

Ⅱ. サンプル

class MyWebProxy : IWebProxy
{
  public ICredentials Credentials { get; set; }
  public Uri GetProxy(Uri destination) => new Uri("http://127.0.0.1:3128");
  public bool IsBypassed(Uri host) => false;
}
var handler = new HttpClientHandler();
handler.Proxy = new MyWebProxy();
handler.UseProxy = true;

// 証明書を全て信頼する
// handler.ServerCertificateCustomValidationCallback = delegate { return true; };

var client = new HttpClient(handler);

その他

ServerCertificateCustomValidationCallback について

このプロパティを変更すると
Linux / Unix環境で OpenSSL 関係のエラーが出る場合があります。

.NET Core AESで暗号化、複合する

Ⅰ. はじめに

Aesクラスを利用します。

.NET Core で IV 256bit を使う方法はこちら。
http://kagasu.hatenablog.com/entry/2017/01/04/213533

Ⅱ. Aesを利用した複合の例

public byte[] DecryptRijndael(byte[] bytes)
{
  Aes aes = Aes.Create();
  aes.Padding = PaddingMode.None;
  aes.Mode = CipherMode.CBC;

  using (var decryptor = aes.CreateDecryptor(key, iv))
  {
    return decryptor.TransformFinalBlock(bytes, 0, bytes.Length);
  }
}

Android 非同期処理を強制しない方法

Ⅰ. はじめに

Android 3.0以降では ネットワーク処理をメインスレッドで行うと以下の例外を吐くようになりました。

java.net.SocketException: android.os.NetworkOnMainThreadException

Ⅱ. 強制しない方法

以下をonCreateなどに追加するとメインスレッドでネットワーク処理を行ってもエラーが出ません。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);