Je suis en train de convertir du code qui a bien fonctionné dans VB, mais je n'arrive pas à comprendre quels objets utiliser dans .Net. Fondamentalement, je veux envoyer un fichier XML à un serveur, puis stocker la réponse qu'il renvoie. Quelqu'un peut-il me pointer dans la bonne direction à ce sujet?Quel est l'équivalent de XMLHTTP de VB6 dans C# .Net 2005?
Répondre
Voyez ce qui suit pour un exemple qui fait ceci: http://www.codeproject.com/KB/dotnet/NET_Interact_j2EE.aspx J'ai mis l'échantillon ci-dessous. Désolé, je sais que c'est gros, mais vous ne savez jamais combien de temps des liens comme celui-ci resteront valides. NOTE: la première version de la question n'a pas dit dans C# .NET - il a juste dit "dans .NET". (Peut-être qu'il a été étiqueté C# et je ne l'ai pas vu) Conversion de VB.NET en C# est assez facile (bien que non nécessaire). 'Cette classe représente la même fonctionnalité de l'objet xmlHTTP dans MSXML.XMLHTTP.
Imports System.Net
Imports System.Web.HttpUtility
Public Class XMLHTTP
'Makes an internet connection to specified URL
Public Overridable Sub open(ByVal bstrMethod As String, _
ByVal bstrUrl As String, Optional ByVal varAsync As _
Object = False, Optional ByVal bstrUser _
As Object = "", Optional ByVal bstrPassword As Object = "")
Try
strUrl = bstrUrl
strMethod = bstrMethod
'Checking if proxy configuration
'is required...(blnIsProxy value
'from config file)
If blnIsProxy Then
'Set the proxy object
proxyObject = WebProxy.GetDefaultProxy()
'Finding if proxy exists and if so set
'the proxy configuration parameters...
If Not (IsNothing(proxyObject.Address)) Then
uriAddress = proxyObject.Address
If Not (IsNothing(uriAddress)) Then
_ProxyName = uriAddress.Host
_ProxyPort = uriAddress.Port
End If
UpdateProxy()
End If
urlWebRequest.Proxy = proxyObject
End If
'Make the webRequest...
urlWebRequest = System.Net.HttpWebRequest.Create(strUrl)
urlWebRequest.Method = strMethod
If (strMethod = "POST") Then
setRequestHeader("Content-Type", _
"application/x-www-form-urlencoded")
End If
'Add the cookie values of jessionid of weblogic
'and PH-Session value of webseal
'for retaining the same session
urlWebRequest.Headers.Add("Cookie", str_g_cookieval)
Catch exp As Exception
SetErrStatusText("Error opening method level url connection")
End Try
End Sub
'Sends the request with post parameters...
Public Overridable Sub Send(Optional ByVal objBody As Object = "")
Try
Dim rspResult As System.Net.HttpWebResponse
Dim strmRequestStream As System.IO.Stream
Dim strmReceiveStream As System.IO.Stream
Dim encode As System.Text.Encoding
Dim sr As System.IO.StreamReader
Dim bytBytes() As Byte
Dim UrlEncoded As New System.Text.StringBuilder
Dim reserved() As Char = {ChrW(63), ChrW(61), ChrW(38)}
urlWebRequest.Expect = Nothing
If (strMethod = "POST") Then
If objBody <> Nothing Then
Dim intICounter As Integer = 0
Dim intJCounter As Integer = 0
While intICounter < objBody.Length
intJCounter = _
objBody.IndexOfAny(reserved, intICounter)
If intJCounter = -1 Then
UrlEncoded.Append(System.Web.HttpUtility.UrlEncode(objBody.Substring(intICounter, _
objBody.Length - intICounter)))
Exit While
End If
UrlEncoded.Append(System.Web.HttpUtility.UrlEncode(objBody.Substring(intICounter, _
intJCounter - intICounter)))
UrlEncoded.Append(objBody.Substring(intJCounter, 1))
intICounter = intJCounter + 1
End While
bytBytes = _
System.Text.Encoding.UTF8.GetBytes(UrlEncoded.ToString())
urlWebRequest.ContentLength = bytBytes.Length
strmRequestStream = urlWebRequest.GetRequestStream
strmRequestStream.Write(bytBytes, 0, bytBytes.Length)
strmRequestStream.Close()
Else
urlWebRequest.ContentLength = 0
End If
End If
rspResult = urlWebRequest.GetResponse()
strmReceiveStream = rspResult.GetResponseStream()
encode = System.Text.Encoding.GetEncoding("utf-8")
sr = New System.IO.StreamReader(strmReceiveStream, encode)
Dim read(256) As Char
Dim count As Integer = sr.Read(read, 0, 256)
Do While count > 0
Dim str As String = New String(read, 0, count)
strResponseText = strResponseText & str
count = sr.Read(read, 0, 256)
Loop
Catch exp As Exception
SetErrStatusText("Error while sending parameters")
WritetoLog(exp.ToString)
End Try
End Sub
'Setting header values...
Public Overridable Sub setRequestHeader(ByVal bstrHeader _
As String, ByVal bstrValue As String)
Select Case bstrHeader
Case "Referer"
urlWebRequest.Referer = bstrValue
Case "User-Agent"
urlWebRequest.UserAgent = bstrValue
Case "Content-Type"
urlWebRequest.ContentType = bstrValue
Case Else
urlWebRequest.Headers(bstrHeader) = bstrValue
End Select
End Sub
Private Function UpdateProxy()
Try
If Not (IsNothing(uriAddress)) Then
If ((Not IsNothing(_ProxyName)) And _
(_ProxyName.Length > 0) And (_ProxyPort > 0)) Then
proxyObject = New WebProxy(_ProxyName, _ProxyPort)
Dim strByPass() As String = Split(strByPassList, "|")
If strByPass.Length > 0 Then
proxyObject.BypassList = strByPass
End If
proxyObject.BypassProxyOnLocal = True
If blnNetworkCredentials Then
If strDomain <> "" Then
proxyObject.Credentials = New _
NetworkCredential(strUserName, _
strPwd, strDomain)
Else
proxyObject.Credentials = New _
NetworkCredential(strUserName, _
strPwd)
End If
End If
End If
End If
Catch exp As Exception
SetErrStatusText("Error while updating proxy configurations")
WritetoLog(exp.ToString)
End Try
End Function
'Property for setting the Responsetext
Public Overridable ReadOnly Property ResponseText() As String
Get
ResponseText = strResponseText
End Get
End Property
Private urlWebRequest As System.Net.HttpWebRequest
Private urlWebResponse As System.Net.HttpWebResponse
Private strResponseText As String
Private strUrl As String
Private strMethod As String
Private proxyObject As WebProxy
Private intCount As Integer
Private uriAddress As Uri
Private _ProxyName As String
Private _ProxyPort As Integer
End Class
Downranked à cause de quoi? –
Je devine parce que le bloc de code était grand, mais vous ne savez jamais combien de temps de tels liens resteront valides. Et il fait juste ce qu'il veut! –
P.S. trouvé en utilisant http://www.searchdotnet.com/ Une recherche personnalisée de Google par The Dan Appleman! –
La réponse est d'utiliser la classe WebClient
: -
WebClient webClient = new WebClient();
NameValueCollection values = new NameValueCollection();
values.add("firstname", "Slarti");
values.add("lastname", "Bart-fast");
byte[] response = webClient.UploadValues("http://server/path", values);
La méthode UploadValues construit une requête POST avec un type de contenu application/x-www-form-urlencoded
et code correctement l'ensemble des valeurs indiquées dans le NameValueCollection
qui lui est passé .
La réponse est un tableau d'octets que vous pouvez ensuite faire quelque chose de approprié avec.
- 1. Quel est l'équivalent .NET le plus simple d'une matrice de contrôle VB6?
- 2. Problème Unicode Net, héritage vb6
- 3. est-il une autre façon de créer graphique en VB.NET 2005 ou C# .NET 2005
- 4. Quel est l'équivalent "urllib2" de python dans dot net?
- 5. Quel est l'équivalent de "ByteBuffer.flip" & "ByteBuffer.slice" dans .NET?
- 6. MSXML2.XMLHTTP - performances Vista
- 7. quel est l'équivalent .NET de @Deprecated dans java?
- 8. Quel est l'équivalent de TreeBidiMap en C#?
- 9. Quel est l'équivalent C# de preg_match_all?
- 10. Quel est l'équivalent de Thread.SetApartmentState en C++?
- 11. XmlHttp Demander l'authentification de base Problème
- 12. Quel est l'équivalent C++ de UINT32_MAX?
- 13. Appel de fonction .Net dans SQL 2005
- 14. Meilleure pratique pour la création d'une DLL .net dll vs vb6 pour l'application de bureau VB6?
- 15. équivalent de Directory.CreateDirectory() dans VB6
- 16. Quel est l'équivalent C# de java.util.regex?
- 17. Quel est l'équivalent C# de Java DecimalFormat?
- 18. Comment capturer des requêtes XMLHTTP dans un contrôle Webbrowser?
- 19. Quel est l'équivalent .NET de CreateEnhMetaFile et PlayEnhMetaFile?
- 20. Utiliser COM .NET en vb6
- 21. Equivalent (fonctionnalité) d'ObjPtr de VB6 en C#?
- 22. Quel est le but de ceci dans l'objectif-c
- 23. Quel est l'équivalent C++ de GetObject dans JavaScript et VBScript?
- 24. Crystal Reports dans Visual Studio 2005 (Application Windows C# .NET)
- 25. XMLHTTP POST request et System.Reflection
- 26. Quel est le type de données de "select 123.866" dans SQL Server 2005?
- 27. basic xmlHttp question
- 28. Quel est le type de données C# pour WINOLEAPI?
- 29. Meilleur IPC pour application VB6 et .net
- 30. Utilisation de Crystal Reports dans Visual Studio 2005 (application Windows C# .NET)
La réponse acceptée n'est pas C#, si vous portez VB6 sur VB.NET et que vous souhaitez conserver autant de votre base de code que vous le souhaitez puis re-étiqueter vers VB.NET. – AnthonyWJones
essayer ce linke: http://stackoverflow.com/questions/6079282/emulate-xmlhttprequest-with-a-net-webclient/10818080#10818080 –