【问题标题】:xml file size for http post - tinyxml vc++http post的xml文件大小 - tinyxml vc++
【发布时间】:2013-02-14 09:19:52
【问题描述】:

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

当 xml 文件达到 300 kb 左右时会发生什么情况,Posting 工作正常。

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

为什么会出现这个错误?

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

我想知道 xml 库的最佳资源,用于编写、读取和解析大约至少 20 mb 的大型 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");
    }

}

【问题讨论】:

    标签: c++ xml xml-parsing http-post


    【解决方案1】:

    如果这是与超时相关的问题,您可以使用以下方法更改超时选项 CInternetSession::SetOption

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

    例如:

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

    【讨论】:

    • 谢谢。但问题仍然存在
    • 例如,@user1441251 尝试使用 Fiddler 发布数据。还要检查服务器是否正常运行。
    • @user1441251,注意:必须在调用 SetOption 之前建立连接。在 GetHttpConnection 之后调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多