C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Digest認証でのRequest Bodyが空になる

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■82437 / inTopicNo.1)  Digest認証でのRequest Bodyが空になる
  
□投稿者/ じゃがりこサラダ (1回)-(2017/01/10(Tue) 18:29:05)

分類:[VB.NET/VB2005 以降] 

現在Windows10Mobileを利用したアプリを開発中です。
Windows10MobileアプリではHttpClientクラスを利用する必要があると認識しており、
環境の構成上、Digest認証後にPOSTリクエストを送信する必要があります。

いくらかプログラムしてみましたがエラーとなっています。
HTTPの内容を確認したところHTTPヘッダの「Content-Length」は正しく設定されていますが、
肝心のHTTPボディにPOSTパラメータが設定されていません。

以下にサンプルコードを記載させていただきますが、何か不備等はございませんでしょうか。
お分かりになる範囲でご教授いただければ幸いです。


Imports System.Net
Imports System.Net.Http

Public Class Class1
Public Async Function registOrderInfo() As Task(Of String)

Dim url As Uri = New Uri("http://test.com/test/testGet.cgi")
Dim sysHandler As HttpClientHandler = New HttpClientHandler()
sysHandler.Credentials = New NetworkCredential("testuser", "testpass") 'Digest認証用アカウント
Dim client As HttpClient = New HttpClient(sysHandler)

Try
Dim param As List(Of KeyValuePair(Of String, String)) = New List(Of KeyValuePair(Of String, String))
param.Add(New KeyValuePair(Of String, String)("test1", "aaa"))
param.Add(New KeyValuePair(Of String, String)("test2", "bbb"))

Dim content As HttpContent = New FormUrlEncodedContent(param)
Dim response As HttpResponseMessage = Await client.PostAsync(url, content)

Dim statusCode As HttpResponseMessage = response.EnsureSuccessStatusCode()
Dim message As String = Await response.Content.ReadAsStringAsync()
Catch ex As Exception
httpResponseBody = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message
End Try

Return ""
End Function

End Class


引用返信 編集キー/
■82496 / inTopicNo.2)  Re[1]: Digest認証でのRequest Bodyが空になる
□投稿者/ 魔界の仮面弁士 (1047回)-(2017/01/11(Wed) 19:16:48)
No82437 (じゃがりこサラダ さん) に返信
> 環境の構成上、Digest認証後にPOSTリクエストを送信する必要があります。
下記と同内容かな?
http://ja.stackoverflow.com/questions/31746


> 以下にサンプルコードを記載させていただきますが、
手元に検証環境が無いので試していませんが、
 Dim cache As New System.Net.CredentialCache()
 cache.Add(url, "Digest", New NetworkCredential("testuser", "testpass"))
 sysHandler.Credentials = cache
だとどうでしょか。


> 何か不備等はございませんでしょうか。
httpResponseBody が宣言されていないとか
「""」以外を Return している箇所が無いとか
受け取った statusCode や message が読み捨てられているとか
引用返信 編集キー/
■82498 / inTopicNo.3)  Re[2]: Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ (2回)-(2017/01/11(Wed) 21:33:32)
No82496 (魔界の仮面弁士 さん) に返信
> ■No82437 (じゃがりこサラダ さん) に返信
>>環境の構成上、Digest認証後にPOSTリクエストを送信する必要があります。
> 下記と同内容かな?
> http://ja.stackoverflow.com/questions/31746

はい、同じになります。

>>以下にサンプルコードを記載させていただきますが、
> 手元に検証環境が無いので試していませんが、

試させていただきましたが、同じ結果となりました。

>>何か不備等はございませんでしょうか。
> httpResponseBody が宣言されていないとか
> 「""」以外を Return している箇所が無いとか
> 受け取った statusCode や message が読み捨てられているとか

今回の質問はhttpRequestBodyが空であるという問題となっております。
今更ながら気がついて大変申し訳ございませんが、
今回Digest認証を実施している関係上、2回アクセスします。

1回目は当然、401で返ってくるのですが、その1回目のhttpRequestのBodyには
POSTパラメータが設定されていますが、2回目のhttpRequestのBodyが空でRequestされていました。

本事象において、何かお分かりになることはありますでしょうか。




引用返信 編集キー/
■82499 / inTopicNo.4)  Re[3]: Digest認証でのRequest Bodyが空になる
□投稿者/ Azulean (765回)-(2017/01/11(Wed) 22:13:10)
No82498 (じゃがりこサラダ さん) に返信
> 1回目は当然、401で返ってくるのですが、その1回目のhttpRequestのBodyには
> POSTパラメータが設定されていますが、2回目のhttpRequestのBodyが空でRequestされていました。

この部分がまったく同じようですし、 https://social.msdn.microsoft.com/Forums/ja-JP/4e0e9a4d-f594-4579-a7d6-4c0682d486c3/httpclientpost?forum=winstoreapp も同じなんですね。
複数箇所でそれを示さずに並行させると、回答者側の労力が無駄になってしまうので、せめて並行している URL を載せてもらえれば…。
引用返信 編集キー/
■82500 / inTopicNo.5)  Re[4]: Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ (3回)-(2017/01/11(Wed) 22:14:58)

> この部分がまったく同じようですし、 https://social.msdn.microsoft.com/Forums/ja-JP/4e0e9a4d-f594-4579-a7d6-4c0682d486c3/httpclientpost?forum=winstoreapp も同じなんですね。
> 複数箇所でそれを示さずに並行させると、回答者側の労力が無駄になってしまうので、せめて並行している URL を載せてもらえれば…。

上記の件、申し訳ございませんでした。
引用返信 編集キー/
■82501 / inTopicNo.6)  Re[3]: Digest認証でのRequest Bodyが空になる
□投稿者/ 魔界の仮面弁士 (1048回)-(2017/01/11(Wed) 23:26:01)
No82498 (じゃがりこサラダ さん) に返信
> 今回の質問はhttpRequestBodyが空であるという問題となっております。
> 今更ながら気がついて大変申し訳ございませんが、
> 今回Digest認証を実施している関係上、2回アクセスします。
>
> 1回目は当然、401で返ってくるのですが、その1回目のhttpRequestのBodyには
> POSTパラメータが設定されていますが、2回目のhttpRequestのBodyが空でRequestされていました。


2 回目の POST パラメーターが失われるのであれば、
ひとまず、力技で送信できないでしょうか。

まずは ICredentials 無しで呼び出して、1 回目の 401 レスポンスを受け取り、
応答ヘッダの WWW-Authenticate を取り出してから、改めて
要求ヘッダーに Authorization を含めて、2 回目のリクエストを POST してみるとか。
出来るかどうかはわかりませんが…。

http://x68000.q-e-d.net/~68user/net/http-auth-2.html
引用返信 編集キー/
■82504 / inTopicNo.7)  Re[4]: Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ (4回)-(2017/01/12(Thu) 11:27:13)
> 2 回目の POST パラメーターが失われるのであれば、
> ひとまず、力技で送信できないでしょうか。
>
> まずは ICredentials 無しで呼び出して、1 回目の 401 レスポンスを受け取り、
> 応答ヘッダの WWW-Authenticate を取り出してから、改めて
> 要求ヘッダーに Authorization を含めて、2 回目のリクエストを POST してみるとか。
> 出来るかどうかはわかりませんが…。
>
> http://x68000.q-e-d.net/~68user/net/http-auth-2.html

かなり状況的には難しいということで理解いたしました。
ご返信ありがとうございました。


引用返信 編集キー/
■82505 / inTopicNo.8)  Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ (5回)-(2017/01/12(Thu) 11:28:16)
2017/01/12(Thu) 12:51:20 編集(投稿者)

マルチポストでご迷惑をおかけし申し訳ございませんでした。
本サイトでの質問はクローズさせていただければと思います。

ご返信いただき、ありがとうございました。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ