我要把文本文件中内容提取后组成XML包用HTTP协议,POST方式发送到HTTP服务器的断口并将返回结果生成文本,服务器端不管,只需解决客户端即可,拜托!请求支援
越详细越好。最好是VB,VC直接调用相关的类,而不是用WINSOCK。非常感谢!!!

解决方案 »

  1.   

    谢谢!我是个新手,能不能详细说说VB的解决方案,最好原码,THANKS A LOT!!!
      

  2.   

    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
      

  3.   

    lax:非常感谢!我是个新手,您能不能在详细说说,用VB怎样把文本按要求组成XML包,调用什么类实现POST该包?谢谢!!!
      

  4.   

    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文件,然后用浏览器打开看看)。
      

  5.   

    这一段代码希望对你有用
    在远程服务器写一个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)的方法生成