通过http post将XML文件发送到外部服务器 [英] send XML file via http post to external server
问题描述
(我的实际问题是结束)这就是我所拥有的
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屋!