DOBON.NET DOBON.NETプログラミング掲示板過去ログ

XMLデータのアップロード

環境/言語:[Windows2000 Linux]
分類:[.NET]

きいぼーです。
Windowsアプリにて、
DBGridのデータをXMLとしてWebサーバ上にアップロードする機能を開発中です。
Proxyの認証が必要なので以下のソースのように
HttpWebRequestクラスを使用しています。

サーバがIISの場合はファイルのアップロードはできたのですが、
Linuxサーバの場合はアップロードできません。
(例外は発生しないのですが、サーバ上のファイルが更新されません。)

HTTPプロトコルを使用したものなので、サーバ側に.Netは不要だと考えていましたが、
駄目なのでしょうか?

初歩的な質問ですみませんが、お教えください。

お願いします。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Dim webreq As System.Net.HttpWebRequest = _
CType(System.Net.WebRequest.Create("http://localhost/Data/XML_TEST.xml"), _
System.Net.HttpWebRequest)

''IEの設定を使用するには次のようにする
webreq.Proxy = System.Net.WebProxy.GetDefaultProxy

'認証が必要なとき
webreq.Credentials = New System.Net.NetworkCredential("user", "PASS")

webreq.Method = "PUT"

Dim Data_Set As Data.DataSet = CType(DataGrid1.DataSource, Data.DataSet)

Dim sWork As String = Data_Set.GetXml

Dim byWork() As Byte
byWork = System.Text.Encoding.UTF8.GetBytes(sWork)

webreq.ContentLength = byWork.Length
webreq.ContentType = "application/x-www-form-urlencoded"

'IOストリーム生成
Dim st As System.IO.Stream = webreq.GetRequestStream

st.Write(byWork, 0, byWork.Length)

st.Close()
st = Nothing
■No2559に返信(きいぼーさんの記事)
> きいぼーです。
> Windowsアプリにて、
> DBGridのデータをXMLとしてWebサーバ上にアップロードする機能を開発中です。
> Proxyの認証が必要なので以下のソースのように
> HttpWebRequestクラスを使用しています。
>
> サーバがIISの場合はファイルのアップロードはできたのですが、
> Linuxサーバの場合はアップロードできません。
> (例外は発生しないのですが、サーバ上のファイルが更新されません。)
>
> HTTPプロトコルを使用したものなので、サーバ側に.Netは不要だと考えていましたが、
> 駄目なのでしょうか?
>
> 初歩的な質問ですみませんが、お教えください。
>
> お願いします。
>
> −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
> Dim webreq As System.Net.HttpWebRequest = _
> CType(System.Net.WebRequest.Create("http://localhost/Data/XML_TEST.xml"), _
> System.Net.HttpWebRequest)
>
> ''IEの設定を使用するには次のようにする
> webreq.Proxy = System.Net.WebProxy.GetDefaultProxy
>
> '認証が必要なとき
> webreq.Credentials = New System.Net.NetworkCredential("user", "PASS")
>
> webreq.Method = "PUT"
>
> Dim Data_Set As Data.DataSet = CType(DataGrid1.DataSource, Data.DataSet)
>
> Dim sWork As String = Data_Set.GetXml
>
> Dim byWork() As Byte
> byWork = System.Text.Encoding.UTF8.GetBytes(sWork)
>
> webreq.ContentLength = byWork.Length
> webreq.ContentType = "application/x-www-form-urlencoded"
>
> 'IOストリーム生成
> Dim st As System.IO.Stream = webreq.GetRequestStream
>
> st.Write(byWork, 0, byWork.Length)
>
> st.Close()
> st = Nothing
>

Linux側のサーバータグとContentTypeの違いでこのような現象が起きるのではないかと
思います。

役に立つかどうかわかりませんが、その違いを下記に書いておきます。
'Linux + Appache用
'Dim serverTag As String = "D"
'Dim findDirectory as String = "httpd/unix-directory"

'W2K + IIS5用
Dim serverTag As String = "a"
Dim findDirectory As String = "application/octet-stream"
きいぼーです。
ありがとうございます。

> Linux側のサーバータグとContentTypeの違いでこのような現象が起きるのではないかと
> 思います。
>
> 役に立つかどうかわかりませんが、その違いを下記に書いておきます。
> 'Linux + Appache用
> 'Dim serverTag As String = "D"
> 'Dim findDirectory as String = "httpd/unix-directory"
>
> 'W2K + IIS5用
> Dim serverTag As String = "a"
> Dim findDirectory As String = "application/octet-stream"
すみません。今回は使用しなくてよくなりましたので、
後日別途確認したいと思います。
ありがとうございました。とりあえず解決済みにしておきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板