通过http post将XML文件发送到外部服务器 [英] send XML file via http post to external server

查看:89
本文介绍了通过http post将XML文件发送到外部服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(我的实际问题是结束)这就是我所拥有的

 bll.SendXMLData(ds)
Dim appstring As String = System.Convert.ToBase64String(app) 这是pdf我发送
Dim base64 作为 整数 = 1
Dim XmlUserInfo As XDocument = XDocument.Load( C:\..location
Dim XmlEmailInfo As XDocument = XDocument.Load( C:\\ ..location
Dim postDoc As String = [ String ]。格式( &安培;版本= {0}&安培; SID = {1}&安培;的docId = {2}&安培; docData = {3}&安培; USERINFO = {4}&安培; emailInfo = {5}&安培; isBase64 = {6},版本,mySessionID,applicationID,appstring,XmlUserInfo,XmlEmailInfo,base64)


Dim baseUrl 作为 字符串 = https:// url
Dim 输入 As 字符串 = postDoc

Dim responseString As 字符串
Dim request As HttpWebRequest
Dim 响应 As HttpWebResponse = Nothing
Dim reader As StreamReader

Dim byteData() As Byte
Dim postStream As Stream = Nothing

request = DirectCast (WebRequest.Create(baseUrl),HttpWebRequest)
request.Method = POST
r equest.ContentType = application / x-www-form-urlencoded
byteData = UTF8Encoding .UTF8.GetBytes(输入)
request.ContentLength = byteData.Length

postStream = request.GetRequestStream()
postStream.Write(byteData, 0 ,byteData.Length)


response = DirectCast (request.GetResponse(),HttpWebResponse )
reader = StreamReader(response.GetResponseStream())
responseString = reader.ReadToEnd()
response.Close()



业务逻辑:

  Sub  SendXMLData( ByVal  ds  As  DataSet)

Dim userID 作为 字符串 = userid@uuu.com
Dim fname 作为 字符串
Dim lname As String
Dim subject As String = 文档主题
Dim 消息作为 String = 此消息已发送

' 尝试
使用 ds.Tables( 0 )。行( 0
fname = .Item( FirstName
lname = .Item( LastName
结束 使用

Dim 设置 As XmlWriterSettings = XmlWriterSettings()
settings.Indent = True

使用 writer 正如 XmlWriter = XmlWriter.Create( C:\ userInfo.xml,设置)
writer.WriteStartDocument()
writer.WriteStartElement( userInfo
writer .WriteStartElement( person
writer.WriteElementString( uid,userID)
writer.WriteElementString( firstname,fname)
writer.WriteElementString( lastname,lname)
writer.WriteEndElement()
结束 使用

使用 writer 作为 XmlWriter = XmlWriter.Create(< span class =code-string> C:\ emailInfo.xml,设置)
writer.WriteStartDocument()
writer.WriteStartElement( emailInfo
writer.WriteElementString( subject,subject)
writer.WriteElementString( message,message )
writer.WriteEndElement()
结束 使用





MY问题:有什么方法可以发送XML文件而不将其保存在本地驱动器中并将其拉出(直接创建并通过POST发送)?

解决方案

使用 XmlTextWriter [ ^ ],比你不需要改变很多。方法如下: http://www.vb-helper.com/howto_net_build_memory_xml.html [ ^ ]

但你可以使用 XmlDocument [ ^ ]还...


我这样做了它工作了



方法返回一个字符串数组





昏暗aXMLString(1)As String

 aXMLString(0)=<   userInfo  > & _ 
< person > & _
< data uid = userID firstname = fname lastname = lname/ > & _
< / person > & _
< / userInfo >

aXMLString(1)=< emailInfo > & _
< subject = subject < span class =code-attribute>消息 = 消息/ > & _
< / emailInfo >





在我的aspx代码中返回aXMLString







Dim xmls()As String

  Dim  XMLUserInfo  As   String  = xmls( 0 
Dim XMLEmailInfo As String = xmls( 1







Dim postDoc As String = [String] .Format(& version = {0}& sid = {1}& docId = {2}& docData = {3}& userInfo = {4 }& emailInfo = {5}& isBase64 = {6},version,mySessionID,applicationID,appstring,XMLUserInfo,XMLEmailInfo,base64)



将其传递给的WebRequest

(My actual question is at end)this is what i have

bll.SendXMLData(ds)
                Dim appstring As String = System.Convert.ToBase64String(app) 'this is pdf i am sending               
                Dim base64 As Integer = 1
                Dim XmlUserInfo As XDocument = XDocument.Load("C:\..location")
                Dim XmlEmailInfo As XDocument = XDocument.Load("C:\..location")
                Dim postDoc As String = [String].Format("&version={0}&sid={1}&docId={2}&docData={3}&userInfo={4}&emailInfo={5}&isBase64={6}", version, mySessionID, applicationID, appstring, XmlUserInfo, XmlEmailInfo, base64)


                Dim baseUrl As String = "https://url"
                Dim input As String = postDoc

                Dim responseString As String
                Dim request As HttpWebRequest
                Dim response As HttpWebResponse = Nothing
                Dim reader As StreamReader

                Dim byteData() As Byte
                Dim postStream As Stream = Nothing

                request = DirectCast(WebRequest.Create(baseUrl), HttpWebRequest)
                request.Method = "POST"
                request.ContentType = "application/x-www-form-urlencoded"
                byteData = UTF8Encoding.UTF8.GetBytes(input)
                request.ContentLength = byteData.Length

                postStream = request.GetRequestStream()
                postStream.Write(byteData, 0, byteData.Length)


                response = DirectCast(request.GetResponse(), HttpWebResponse)
                reader = New StreamReader(response.GetResponseStream())
                responseString = reader.ReadToEnd()
                response.Close()


in business logic :

Sub SendXMLData(ByVal ds As DataSet)

            Dim userID As String = "userid@uuu.com"
            Dim fname As String
            Dim lname As String
            Dim subject As String = " document subject"
            Dim message As String = "This message is sent "

            'Try
            With ds.Tables(0).Rows(0)
                fname = .Item("FirstName")
                lname = .Item("LastName")
            End With

            Dim settings As XmlWriterSettings = New XmlWriterSettings()
            settings.Indent = True

            Using writer As XmlWriter = XmlWriter.Create("C:\userInfo.xml", settings)
                writer.WriteStartDocument()
                writer.WriteStartElement("userInfo")
                writer.WriteStartElement("person")
                writer.WriteElementString("uid", userID)
                writer.WriteElementString("firstname", fname)
                writer.WriteElementString("lastname", lname)
                writer.WriteEndElement()
            End Using

            Using writer As XmlWriter = XmlWriter.Create("C:\emailInfo.xml", settings)
                writer.WriteStartDocument()
                writer.WriteStartElement("emailInfo")
                writer.WriteElementString("subject", subject)
                writer.WriteElementString("message", message)
                writer.WriteEndElement()
            End Using



MY Question: is there any way i can send XML file without saving it in local drive and pulling it out(directly create it and send via POST)??

解决方案

Use XmlTextWriter[^], than you don't have to change a lot. Here it is how: http://www.vb-helper.com/howto_net_build_memory_xml.html[^]
But you could use XmlDocument[^] also...


i just did this and it worked

the method returned a string array


Dim aXMLString(1) As String

aXMLString(0) = "<userInfo>" & _
                                "<person>" & _
                                    "<data uid=""userID"" firstname=""fname"" lastname=""lname""/>" & _
                                "</person>" & _
                            "</userInfo>"

aXMLString(1) = "<emailInfo>" & _
                                    "<subject=""subject"" message=""message""/>" & _
                            "</emailInfo>"



Return aXMLString

in my aspx code:

Dim xmls() As String

Dim XMLUserInfo As String = xmls(0)
Dim XMLEmailInfo As String = xmls(1)




Dim postDoc As String = [String].Format("&version={0}&sid={1}&docId={2}&docData={3}&userInfo={4}&emailInfo={5}&isBase64={6}", version, mySessionID, applicationID, appstring, XMLUserInfo, XMLEmailInfo, base64)

pass it to webrequest


这篇关于通过http post将XML文件发送到外部服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆