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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.82437 の関連記事表示

<< 0 >>
■82437  Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ -(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

親記事 /過去ログ141より / 関連記事表示
削除チェック/

■82496  Re[1]: Digest認証でのRequest Bodyが空になる
□投稿者/ 魔界の仮面弁士 -(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 が読み捨てられているとか
記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82498  Re[2]: Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ -(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されていました。

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



記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82499  Re[3]: Digest認証でのRequest Bodyが空になる
□投稿者/ Azulean -(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 を載せてもらえれば…。
記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82500  Re[4]: Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ -(2017/01/11(Wed) 22:14:58)
記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82501  Re[3]: Digest認証でのRequest Bodyが空になる
□投稿者/ 魔界の仮面弁士 -(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
記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82504  Re[4]: Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ -(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

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

記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82505  Digest認証でのRequest Bodyが空になる
□投稿者/ じゃがりこサラダ -(2017/01/12(Thu) 11:28:16)
    2017/01/12(Thu) 12:51:20 編集(投稿者)

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

    ご返信いただき、ありがとうございました。
記事No.82437 のレス /過去ログ141より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -