2012-05-08 5 views
1

このコードは古いVB6でうまくいきます。私はVB.NETでこれを行うためのあらゆる種類の方法を試しましたが、動作させることはできません。誰でも.NETで動作するコードを教えてください。VBXでのMSXML

Dim objHTTP As New MSXML2.XMLHTTP 

Dim strReturn As String 
Dim objReturn As New MSXML2.DOMDocument 


Dim url As String 
Dim XMLEnvelope As String 


url = "http://zzzzzdummy.com" 

XMLEnvelope = vbNull 



objHTTP.open("post", url, False, "", "") ' 

Debug.Print(Err.Number) 

objHTTP.setRequestHeader("Content-Type", "text/xml") 
objHTTP.setRequestHeader("Content-length", Len(XMLEnvelope)) 
Debug.Print("------------Send Envelope-------------") 
Debug.Print(XMLEnvelope) 
Debug.Print("--------------------------------------") 
objHTTP.send(XMLEnvelope) 

strReturn = objHTTP.responseText 
objReturn.loadXML(strReturn) 
Debug.Print("----------Response Envelope-----------") 
Debug.Print(strReturn) 
Debug.Print("--------------------------------------") 
+0

あなたは 'System.Xml'名前空間を見たことがありますか? –

+0

他に何を試しましたか? –

答えて

1

.NETアプリケーションでMSXMLを使用しないでください。さまざまなSystem.Xml名前空間のクラスは、より強力で使いやすくなっています。彼らはまた、はるかに長い有効寿命を持つ可能性があります。

実際にVB.NETを使用していることは幸いです。 XMLリテラルによるXMLの処理とLINQからXMLへの組み込み処理が組み込まれています。


実際には、コードにはXMLの処理が含まれていません。 WebClientまたはWebRequestクラスを使用するだけです。

+0

.NETでこれを使用したくないのですが、.NETで同じことをするコードを見つけようとしていました。 –

2

これは私が思いついたものです。これからのレスポンスは、XMLリターンに入り、解析することができます。

Function WRequest(ByVal URL As String, ByVal method As String, ByVal POSTdata As String) As String 
    Dim responseData As String = "" 

    Try 
     Dim hwrequest As Net.HttpWebRequest = Net.WebRequest.Create(URL) 
     hwrequest.Accept = "*/*" 
     hwrequest.AllowAutoRedirect = True 
     hwrequest.UserAgent = "http_requester/0.1" 
     hwrequest.Timeout = 60000 
     hwrequest.Method = method 

     If hwrequest.Method = "POST" Then 
      hwrequest.ContentType = "application/x-www-form-urlencoded" 

      Dim encoding As New Text.ASCIIEncoding() 'Use UTF8Encoding for XML requests 
      Dim postByteArray() As Byte = encoding.GetBytes(POSTdata) 
      hwrequest.ContentLength = postByteArray.Length 

      Dim postStream As IO.Stream = hwrequest.GetRequestStream() 
      postStream.Write(postByteArray, 0, postByteArray.Length) 
      postStream.Close() 

     End If 

     Dim hwresponse As Net.HttpWebResponse = hwrequest.GetResponse() 
     If hwresponse.StatusCode = Net.HttpStatusCode.OK Then 
      Dim responseStream As IO.StreamReader = New IO.StreamReader(hwresponse.GetResponseStream()) 
      responseData = responseStream.ReadToEnd() 
     End If 

     hwresponse.Close() 
    Catch e As Exception 
     responseData = "An error occurred: " & e.Message 
    End Try 
    Return responseData 

End Function 
+0

+1:かなり良いですが、 'Stream'、' StreamReader 'と' WebResponse'インスタンスを使用すると、例外が何であるかを誰にも知らせない文字列として返すのではなく、例外を伝播させる方が良いでしょう。 –

関連する問題