http post-tinyxml vc++的xml文件大小

xml file size for http post - tinyxml vc++

本文关键字:xml 文件大小 vc++ post-tinyxml http      更新时间:2023-10-16

Am正在尝试将xml文件作为字符串发布到服务器。Xml库是tinyxml,用于使用CInternetsession发布am。

当xml文件达到大约300kb时,Posting工作正常。

但当xml文件大小超过这个值时,我会收到"操作超时"。

为什么会出现这种错误?

这是xml或CinternetSession发布的大小的问题吗?

我想知道用于编写、读取和解析大约20mb的大型xml的xml库的最佳资源。我们对xml解析有任何限制吗

    char text[7000] = {""};
SHGetSpecialFolderPath(0,xmlpth,CSIDL_APPDATA,1);
TiXmlDocument docs( "C:\XmlData.xml" );
bool loadOkays = docs.LoadFile();
if ( !loadOkays )
{
}
else
{
    TiXmlPrinter printer;
    printer.SetIndent("t");
    docs.Accept( &printer );
    docs.Print();
    CString URLpostdata = printer.CStr();
    #define MAX_READ_BUFFER 102400
    CString strHeaders =_T("Content-Type: text/xml");
    CString strFormData = _T("Data=<?xml version="1.0" encoding="UTF-8" ?><xmldata>"+URLpostdata+"</xmldata>");
    CInternetSession session;
    session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,60000);
    session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 60000);
    CHttpConnection* pConnection = session.GetHttpConnection(_T("xxx.xxx.xxx.x"));
    CHttpFile* pFile =
        pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/WinTest/TestServlet?"));
    BOOL result = pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());    
    DWORD dwError;
    pFile->QueryInfoStatusCode(dwError);
    if(dwError==200)
    {
        AfxMessageBox("Data was successfully posted");
    }
}

如果这是一个与超时相关的问题,您可以使用CInternetSession::设置选项

要获取有效的超时值,请使用:CInternetSession:QueryOption

例如:

CInternetSession s;   
s.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 60000);
s.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 60000);