Digest認証ありのPOSTリクエストにおいて、HTTPボディが空になる
#同じ質問をわんくま同盟でも同じ質問をさせていただいております。
現在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
(1月11日追記)
今更ながら気がついて大変申し訳ございませんが、
今回Digest認証を実施している関係上、2回アクセスします。
1回目は当然、401で返ってくるのですが、その1回目のhttpRequestのBodyにはPOSTパラメータが設定されていますが、2回目のhttpRequestのBodyが空でRequestされていました。
1回目と2回目のアクセスはPostAsyncの中で実行されていると理解していますが、
本事象を解決する方法はありませんでしょうか。