質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

3437閲覧

[C#]レスポンスから、クッキーにセットされた値を取得したい

bbdd

総合スコア43

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2018/04/20 09:02

前提

・WPFアプリ
・Visual Studio 2017
・C#

実現したいこと

「通信処理が完了した後に、レスポンスからクッキーにセットされた値を取得したい」

↑がやりたいことです。

<詳細>
通信成功後のヘッダー情報は以下のようになっており、Set-CookieSESSIONの値を取得したいです

HTTP/1.1 200 OK Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Server: openresty Set-Cookie: SESSION=hogeSession;Path=/;Secure;HttpOnly // 省略

現状の取得方法

if (response.IsSuccessStatusCode) { var cookie = response.Headers.GetValues("Set-Cookie").First(); var sessionValue = cookie; }

現状上記のようにSet-Cookieの値を取得しているのですが、これだと
取得したときの値(sessionValueに格納される値)がSESSION=hogeSession;Path=/;Secure;HttpOnly です。SESSIONの値だけを取得したいのですが、皆様であればどうしますでしょうか?

アドバイス頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

その位であれば;でSplitして=でSplitしたものでDictionary作るのはどうでしょうか。
エスケープとかいろいろあると面倒になりますが。

csharp

1var cookie = "SESSION=hogeSession;Path=/;Secure;HttpOnly"; 2var cookieDictionary = cookie.Split(';') 3 .Select(d => d.Contains("=") ? d : d + "=") 4 .Select(d => d.Split(new char[] { '=' }, 2)) 5 .ToDictionary(d => d[0], d => d[1]); 6var sessionValue = cookieDictionary["SESSION"];

投稿2018/04/20 09:55

sh_akira

総合スコア380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bbdd

2018/04/20 10:10

回答ありがとうございます! そうですよね~ なんか文字列操作して取り出すの美しくいな~と変なプライドが働きw、億劫になっていたのですが sh_akira さんのやり方が綺麗でいいなと思いました :)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問