1

私のコードは、 vc++ を使用して xml データをサーバーに投稿する必要があります。投稿には CInternetSession を使用し、xml には tinyxml を使用しています。

私の xml データが約 8 kb の場合、データは非常に適切に投稿されます。ただし、xml ファイルのサイズが約 15 kb の場合、「サーバーへの接続がリセットされました」というメッセージが表示されます。

TiXmlDocument doc( "C:\\test.xml" );
bool loadOkay = doc.LoadFile();

if ( loadOkay )
{
    TiXmlPrinter printer;
    printer.SetIndent("\t");
    docs.Accept( &printer );

    docs.Print();
    CString zURLstest = printer.CStr();

    #define MAX_READ_BUFFER 102400

    CInternetSession* p_CInternetSession;
    CHttpFile* p_HttpFile;
    CStdioFile* p_File;
    char z_ResponseBuff [MAX_READ_BUFFER];
    ULONG ul_ReadLen;
    CFile cFResponce;

    p_CInternetSession = new CInternetSession(NULL,1,PRE_CONFIG_INTERNET_ACCESS,NULL,NULL,0);
    p_CInternetSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,10000);
    p_CInternetSession->SetOption(INTERNET_OPTION_CONNECT_RETRIES, 3);

    CString zURL = "http://xxx.xxx.xxx.x/Test/TestServlet?Data=";
    CString zDWURL(zURL + zURLstest);

    p_File =  p_CInternetSession->OpenURL(zDWURL, 1, INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE);           

    AfxMessageBox(zDWURL);

    p_HttpFile = (CHttpFile*)p_File;
    ul_ReadLen = p_HttpFile->Read (z_ResponseBuff, MAX_READ_BUFFER);

    DWORD dwError;
    p_HttpFile->QueryInfoStatusCode(dwError);

    if(dwError==200)
    {
        AfxMessageBox("Data updated successfully");

        remove(c:\\test.xml");
    }
}

この問題を解決するためのアイデアや提案

4

1 に答える 1