- PR -

HTTPリクエストヘッダにDateを付加したい

1
投稿者投稿内容
テクノカ
会議室デビュー日: 2005/04/27
投稿数: 1
投稿日時: 2005-04-27 11:00
どなたかお分かりの方がいらっしゃりましたら、ご教授ください。

VB.NETから「HttpWebRequest」を使用しHTTPリクエストヘッダを設定しておりますが
そのHTTPリクエストヘッダの中に「Date」を付加させたいのですが、
プログラム上からうまく付加させることが出来ません。

ドットネットのヘルプを見る限りで、「システムにより現在の日付に設定されます。」
と書いてあり、プログラム上からは設定出来ずにいます。
(ためしに設定してみたところ「設定が不適切です」のエラーが発生しました)

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemnethttpwebrequestclassheaderstopic.asp

そもそもHTTPリクエストにDateが設定可能なのか?というのもあるのですが
プログラム上から設定させる方法、
もしくはOSやWebサーバー(IISのバージョン5を使用)から設定させる方法
等についてご教授ください。

尚、HTTPリクエスト時のHostについては特別設定はしておりませんが、
送信されるようになっております。

・概要

 (1)[VB6.0アプリケーション] →SOAP通信→ (2)[VB.NETWebアプリケーション] →HTTP通信→ (3)[Webサービス]

 (2)から(3)のHTTPリクエスト時にDateヘッダを付加したい。

コード:

Public Function HttpRequest(ByVal qStr As String) As String

  Dim webreq As System.Net.HttpWebRequest

  Dim postDataBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(qStr)

  webreq = System.Net.WebRequest.Create(srvURL)

  webreq.Method = "POST"

  'プロトコル情報
  webreq.ProtocolVersion = System.Net.HttpVersion.Version11

  'プログラムバージョン
  webreq.UserAgent = "HogeHoge/1.0"

  'Content-Type
  webreq.ContentType = "application/x-www-form-urlencoded"

  'HTTP-Bodyサイズ
  webreq.ContentLength = postDataBytes.Length

  '====Date日付の設定?====

  'Connection
  webreq.KeepAlive = False

  'データをPOST送信するためのStreamを取得
  Dim reqStream As System.IO.Stream = webreq.GetRequestStream()

  '送信するデータをストリームに書き込む
  reqStream.Write(postDataBytes, 0, postDataBytes.Length)
  reqStream.Close()

  'サーバーからの応答を受信するためのWebResponseを取得
  Dim webres As System.Net.WebResponse = webreq.GetResponse()

  '応答データを受信するためのStreamを取得
  Dim st As System.IO.Stream = webres.GetResponseStream()
  Dim sr As New System.IO.StreamReader(st, System.Text.Encoding.GetEncoding("shift_jis"))
  HttpRequest = sr.ReadToEnd()

 End Function



・HTTPリクエスト時のヘッダ内容

===================================================
POST /XXXXX/XXXXX HTTP/1.1
Connection: Close
Content-Length: 477
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
Host: XXXXX
User-Agent: XXXXX
===================================================

・HTTPリクエストヘッダに以下を追加したい。

***************************************************
Date: Thu, 21 Apr 2005 05:23:42 GMT
***************************************************


どうぞ、宜しくお願い致します。

[ メッセージ編集済み 編集者: テクノカ 編集日時 2005-04-27 17:46 ]
じじ
会議室デビュー日: 2006/01/16
投稿数: 8
投稿日時: 2006-08-14 11:58
解決策じゃなくてごめんなさい。私も全く同様の現象で悩んでおります。
環境は、1.1、2.0ですが、共にDateヘッダが送信されない事象が発生しております。

やったこと
(1)HttpWebRequest.Headers.Addで"Date"を追加
 =>「このヘッダーは、適切なプロパティを使用して変更しなければなりません。」例外が発生。
(2)WebHeaderCollectionを継承したクラスを作り、
 WebHeaderCollection.AddWithoutValidateを使ってDateを追加し、HttpWebRequest.Headersに代入。
 =>上記(1)の例外は発生しなかったが、受け取り側でDateヘッダは確認できなかった。

SSLでの通信でなければ、ソケット通信を使うのですが…。

何かご存知の方、ご教授ください。
1

スキルアップ/キャリアアップ(JOB@IT)