我用String 接收服务器上的Xml 数据,如果把Buffer 设置的足够大,一次读出则没有什么问题,如果使用一个固定的buffer 读这些数据,而每次根据读回的数据长度把数据和并为一个完成的缓冲区,则在合并处出现一些多余的空格。代码如下
        Dim strResult As String
        Dim retLen As Long
        Dim bRet As Boolean
        Do
            Dim buffer As String * &H800
            bRet = InternetReadFile(hHttpOpenRequest, buffer, &H20, retLen)
            If (retLen > 0) Then
                strResult = strResult & Left(buffer, retLen)
                Debug.Print Len(strResult)
                Debug.Print strResult
            End If
        Loop While retLen > 0正常数据
<?xml version='1.0'?>
 <document>              
<user userid='112121' username='zych72'>
<VIEWREPORT/><AUDITREPORT/><SUBMITREPORT/>
</user> 
</document>  
问题数据
<?xml version='1.0'?>
 <document>              
<user userid='112121' username='zych72'>
<VIEWREPORT/><AUDITREPORT/><SUBMIT  REPORT/>  ---------这里多出来空格
<ExpiredTime value='2003-04-17'/>
</user> 
</document>  
请问这是什么原因,如何解决?

解决方案 »

  1.   

    这套代码看不出来
    InternetReadFile是什么?这个是关键!
      

  2.   

    hInternetSession = InternetOpen(scUserAgent, _
            hInternetConnect = InternetConnect(hInternetSession, strHost, _
                strPort, vbNullString, vbNullString, INTERNET_SERVICE_HTTP, 0, 0)
            hHttpOpenRequest = HttpOpenRequest(hInternetConnect, "POST", _
                    strURI + "?" + postContent, "HTTP/1.1", vbNullString, 0, internetFlag, 0)
    InternetOpen, InternetConnect, HttpOpenRequest, InternetReadFile 都是 wininet api
      

  3.   

    改用MSXML.XMLHttpRequest 对象进行解析,不用这么底层的API 侯问题解决