Can use MSXML2.XMLHTTP object. Reference: MSDN Library root -> XML Web Services -> XML -> XML Products -> MSXML -> SDK Documentation -> 4.0 or 3.0 SDK -> XML Reference
Server 端程序是不是一起做的? 如果不是的话,可能不那么好做,例如要求 XML 是一个附件。 如果不要求XML是附件,就可以直接把XML作为字符串发到 Web Server 的处理程序。组成XML很简单: <boy> <name>Jeff Roberts</name> <birthday> <year>1970</year> <month>8</month> <day>23</day> </birthday> </boy> 组装成象上面那样的字符串就可以了,如果 Server 端是调用的标准 XML 解析器,一定要注意组成的 XML 是否合法(可以将它存为.xml文件,然后用浏览器打开看看)。
这一段代码希望对你有用 在远程服务器写一个ASP文件接收数据如: <% If Request.ServerVariables("REQUEST_METHOD")="POST" Then ON ERROR RESUME NEXT Dim AttendArray Dim ResStr Set xmldom=Server.CreateObject("Microsoft.XMLDOM") Set Obj=Server.CreateObject("SAS.SHIFT") xmldom.load(Request) Set Rs=Server.CreateObject("ADODB.Recordset") Rs.Open xmldom AttendArray=Rs.GetRows If IsArray(AttendArray) Then ResStr=Obj.AddAttendRecord(AttendArray) End If If Err.number =0 Then Response.Write "OK" Set xmlResult=Server.CreateObject("Microsoft.XMLDOM") xmlResult.save(Response) Set xmlResult=Nothing Else Response.Write "NO" Set xmlResult=Server.CreateObject("Microsoft.XMLDOM") xmlResult.save(Response) Set xmlResult=Nothing End If End If %>客户端这样写的 Dim Url As String Url = "http://" & ServerName & "/shift/AddAttendRecord.asp"
Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Dim Strm As ADODB.Stream Dim XMLHttp As XMLHTTPRequest Dim ObjSas As InstantPassCls.clsSAS Dim AttendArray As Variant Dim i As Integer Set rs = New ADODB.Recordset Set ObjSas = New InstantPassCls.clsSAS AttendArray = ObjSas.GetUploadRecord
If IsArray(AttendArray) Then
With rs.Fields .Append "StaffNo", adBSTR .Append "Time", adBSTR .Append "AttendType", adBSTR End With rs.Open With rs For i = 0 To UBound(AttendArray, 2) .AddNew .Fields("StaffNO") = AttendArray(0, i) .Fields("Time") = AttendArray(1, i) .Fields("AttendType") = AttendArray(2, i) .Update Next i End With
Set Strm = New ADODB.Stream rs.Save Strm, adPersistXML Set XMLHttp = New XMLHTTPRequest XMLHttp.Open "POST", Url, False XMLHttp.send Strm.ReadText
If Err.Number = 0 Then UPloadData = XMLHttp.responseText Sleep (10000) 'If Left(UPloadData, 2) = "NO" Then If InStr(1, UPloadData, "NO") > 0 Then UPloadData = LoadResString(5038) WriteLog 4, "Upload data failed" End If 'If Left(UPloadData, 2) = "OK" Then If InStr(1, UPloadData, "OK") > 0 Then ObjSas.MarkRecord WriteLog 4, "Upload data success" UPloadData = LoadResString(5037) End If Else UPloadData = LoadResString(5036) WriteLog 4, "Upload data failed" End If
Else UPloadData = LoadResString(5035) End If
Set ObjSas = Nothing Set rs = Nothing 应该能满足你的要求,用VB怎样把文本按要求组成XML包,可以按照lax(key)的方法生成
Reference: MSDN Library root -> XML Web Services -> XML -> XML Products -> MSXML -> SDK Documentation -> 4.0 or 3.0 SDK -> XML Reference
如果不要求XML是附件,就可以直接把XML作为字符串发到 Web Server 的处理程序。组成XML很简单:
<boy>
<name>Jeff Roberts</name>
<birthday>
<year>1970</year>
<month>8</month>
<day>23</day>
</birthday>
</boy>
组装成象上面那样的字符串就可以了,如果 Server 端是调用的标准 XML 解析器,一定要注意组成的 XML 是否合法(可以将它存为.xml文件,然后用浏览器打开看看)。
在远程服务器写一个ASP文件接收数据如:
<%
If Request.ServerVariables("REQUEST_METHOD")="POST" Then
ON ERROR RESUME NEXT
Dim AttendArray
Dim ResStr
Set xmldom=Server.CreateObject("Microsoft.XMLDOM")
Set Obj=Server.CreateObject("SAS.SHIFT")
xmldom.load(Request)
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.Open xmldom
AttendArray=Rs.GetRows
If IsArray(AttendArray) Then
ResStr=Obj.AddAttendRecord(AttendArray)
End If
If Err.number =0 Then
Response.Write "OK"
Set xmlResult=Server.CreateObject("Microsoft.XMLDOM")
xmlResult.save(Response)
Set xmlResult=Nothing
Else
Response.Write "NO"
Set xmlResult=Server.CreateObject("Microsoft.XMLDOM")
xmlResult.save(Response)
Set xmlResult=Nothing
End If
End If
%>客户端这样写的
Dim Url As String Url = "http://" & ServerName & "/shift/AddAttendRecord.asp"
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Strm As ADODB.Stream
Dim XMLHttp As XMLHTTPRequest
Dim ObjSas As InstantPassCls.clsSAS
Dim AttendArray As Variant
Dim i As Integer
Set rs = New ADODB.Recordset
Set ObjSas = New InstantPassCls.clsSAS
AttendArray = ObjSas.GetUploadRecord
If IsArray(AttendArray) Then
With rs.Fields
.Append "StaffNo", adBSTR
.Append "Time", adBSTR
.Append "AttendType", adBSTR
End With
rs.Open
With rs
For i = 0 To UBound(AttendArray, 2)
.AddNew
.Fields("StaffNO") = AttendArray(0, i)
.Fields("Time") = AttendArray(1, i)
.Fields("AttendType") = AttendArray(2, i)
.Update
Next i
End With
Set Strm = New ADODB.Stream
rs.Save Strm, adPersistXML
Set XMLHttp = New XMLHTTPRequest
XMLHttp.Open "POST", Url, False
XMLHttp.send Strm.ReadText
If Err.Number = 0 Then
UPloadData = XMLHttp.responseText
Sleep (10000)
'If Left(UPloadData, 2) = "NO" Then
If InStr(1, UPloadData, "NO") > 0 Then
UPloadData = LoadResString(5038)
WriteLog 4, "Upload data failed"
End If
'If Left(UPloadData, 2) = "OK" Then
If InStr(1, UPloadData, "OK") > 0 Then
ObjSas.MarkRecord
WriteLog 4, "Upload data success"
UPloadData = LoadResString(5037)
End If
Else
UPloadData = LoadResString(5036)
WriteLog 4, "Upload data failed"
End If
Else
UPloadData = LoadResString(5035)
End If
Set ObjSas = Nothing
Set rs = Nothing
应该能满足你的要求,用VB怎样把文本按要求组成XML包,可以按照lax(key)的方法生成