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

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

新規登録して質問してみよう
ただいま回答率
87.20%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

解決済

vb.net : httpclientを使用してBasic認証する方法をご教示頂けないでしょうか。

ctk
ctk

総合スコア31

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1回答

0評価

0クリップ

729閲覧

投稿2021/12/09 12:30

編集2021/12/09 13:07

いつも大変お世話になっております。

早速ですが、
httpclientを使用してBasic認証する方法をご教示頂けないでしょうか。

現在、Basic認証が掛かっているサイトにあるtextデータを取得するプログラムを作成しております。
リンク内容
のサイトなどを参考に実装してみたのですが、
実行すると、405 コードが返ってきて認証に失敗しているようです。
何か考えられる原因をご教示頂けると幸いです、何卒よろしくお願いいたします。

開発環境は、
OS:windows10 pro
VisualStudio:Visual Studio 2017
.net framwork :4.6.2
になります。

開発している最終形は、
VB.netの実行ファイルを実行すると、
Basic認証が掛かっているサイトからtextデータをローカルにダウンロードする事
になります。

StatusCode: 405, ReasonPhrase: '', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Thu, 09 Dec 2021 12:25:43 GMT
Set-Cookie: JSESSIONID=6BA7E815E156B8C688AED2E56D7B2B92; Path=/; HttpOnly
Content-Length: 1181
Content-Language: ja
Content-Type: text/html; charset=utf-8
}

[コード] Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Basic認証するユーザ名とパスワード Dim userName = "test" Dim userPassword = "test" 'リクエストの生成 Dim request = New HttpRequestMessage request.Method = HttpMethod.Post request.RequestUri = New Uri("http://sample.jp/") 'Basic認証ヘッダを付与する request.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(String.Format("{0}:{1}", userName, userPassword)))) 'リクエストの送信 Dim httpClient = New HttpClient() Dim response = Await httpClient.SendAsync(request) MessageBox.Show(response.ToString) End Sub

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww

2021/12/09 12:39

まず、何はともあれ、コードは ``` と ``` で囲ってください(``` はバッククォート 3 つ)。インデントされて見やすくなるので。 参考にしたサイトは URL の文字列を書くだけではなく、ワンクリックでそこに飛べるようリンクを張って下さい。 次に何を作っているか(WinForms? WPF? ASP.NET Web アプリ? その他?)と開発環境(OS, Visual Studio のバージョン、.NET Framework か Core のどっちかろそのバージョンなど)を質問欄を編集して追記してください。
ctk

2021/12/09 12:44

SurferOnWww様 早速、ご連絡頂き、誠にありがとうございます。先ほど、修正させて頂きました。
SurferOnWww

2021/12/09 12:50

何を作っているか(WinForms? WPF? ASP.NET Web アプリ? その他?)と開発環境(OS, Visual Studio のバージョン、.NET Framework か Core のどっちかろそのバージョンなど)を質問欄を編集して追記してください。 「405 - メソッドは許可されていません」で認証に通らなかったときのエラーメッセージと違うようですが? ブラウザでアクセスしてそれから同じ id と password を入力してログインできますか?
ctk

2021/12/09 13:04

SurferOnWww様 お付合い頂き、誠にありがとうございます。開発環境を追記致しました。 また、IDとPASSWORDの件ですが、Chrome等のWebブラウザではログイン出来ました。
SurferOnWww

2021/12/09 13:47

Fiddler を使って、ブラウザでうまくいく時と HttpClient でダメな時の要求・応答を比べると、そこに解決のためのヒントが見つかるかもしれません。
SurferOnWww

2021/12/11 01:17

質問者さん、その後無言ですが、回答したのでそれに対するフィードバックを質問のコメント欄に書いてください。役に立った/立たなかったぐらいはすぐに返せるのでは? 役に立たなかったなら、どこがダメなのかを書いてもらえるとより期待に近い回答が出てくるかも。とにかく無言で放置は NG です。
ctk

2021/12/11 01:44

SurferOnWww様 貴重なお時間を割いて、ご回答頂いたのに連絡が滞ており、誠に申し訳ございません。 request.Method = HttpMethod.Post を get にすることで、Status 200が戻ってくるようになりました。Fiddlerの調査方法含めて、大変勉強になりました。今後とも何卒よろしくお願いいたします。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。