我试图将xml文件作为字符串发布到服务器。 Xml库是tinyxml,用于使用CInternetsession发布。
当xml文件达到300 kb左右时,会发生错误。
但是当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");
}
}
答案 0 :(得分:0)
如果这是与超时相关的问题,您可以使用更改超时选项 CInternetSession::SetOption
要获取有效超时值,请使用:CInternetSession::QueryOption
e.g:
CInternetSession s;
s.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 60000);
s.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 60000);