Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Http连接后重置,同时发送大数据vc++;_C++_Http_Visual C++_Mfc_Connection - Fatal编程技术网

C++ Http连接后重置,同时发送大数据vc++;

C++ Http连接后重置,同时发送大数据vc++;,c++,http,visual-c++,mfc,connection,C++,Http,Visual C++,Mfc,Connection,我的代码需要使用vc++将xml数据发布到服务器,我使用CInternetSession发布,tinyxml发布 如果我的xml数据大约为8KB,那么发布的数据就非常好。但是,如果xml文件大小约为15KB,那么我将收到“与服务器的连接已重置” 任何解决此问题的想法或建议这不是一篇文章,而是一个GET请求,所有数据都被粘贴到URL中。由于各种原因,大多数服务器对URL长度都有限制。如果您超过此限制,服务器的响应将立即断开您的连接,并对您尝试DDOS或缓冲区溢出攻击的理论产生偏见 查看和的文档,很

我的代码需要使用vc++将xml数据发布到服务器,我使用CInternetSession发布,tinyxml发布

如果我的xml数据大约为8KB,那么发布的数据就非常好。但是,如果xml文件大小约为15KB,那么我将收到“与服务器的连接已重置”


任何解决此问题的想法或建议

这不是一篇文章,而是一个GET请求,所有数据都被粘贴到URL中。由于各种原因,大多数服务器对URL长度都有限制。如果您超过此限制,服务器的响应将立即断开您的连接,并对您尝试DDOS或缓冲区溢出攻击的理论产生偏见

查看和的文档,很明显不能使用
OpenURL
。它无法让您指定(文档称之为)用于HTTP请求的动词

您必须找到一种使用该函数的方法。这看起来要复杂得多,因为您必须自己将URL挑选到其组件中。也许库中有一些很好的URL解析函数,您可以使用它们来实现这一点


我必须说,这是一个设计非常糟糕的库。

这不是一篇文章,而是一个GET请求,所有数据都被粘贴到URL中。由于各种原因,大多数服务器对URL长度都有限制。如果您超过此限制,服务器的响应将立即断开您的连接,并对您尝试DDOS或缓冲区溢出攻击的理论产生偏见

查看和的文档,很明显不能使用
OpenURL
。它无法让您指定(文档称之为)用于HTTP请求的动词

您必须找到一种使用该函数的方法。这看起来要复杂得多,因为您必须自己将URL挑选到其组件中。也许库中有一些很好的URL解析函数,您可以使用它们来实现这一点


我必须说,这是一个设计非常糟糕的图书馆。

对不起,我是新来的,这让我很困惑。但是,我无法将xml数据发布到server@user1441251:因此,有两种主要方法用于将数据获取到HTTP服务器。一种是GET(您正在使用的),其中数据编码在URL中。但是GET应该只用于不修改服务器上任何内容的请求,并且因为数据是在URL中编码的,所以它只能用于数据量相对较小的请求(例如搜索查询)。您需要弄清楚如何让您的框架使用POST请求。@user1441251:我在MFC文档中为您做了一些探索,发现您至少必须使用哪些方法。对不起,我是新手,这让我感到困惑。但是,我无法将xml数据发布到server@user1441251:因此,有两种主要方法用于将数据获取到HTTP服务器。一种是GET(您正在使用的),其中数据编码在URL中。但是GET应该只用于不修改服务器上任何内容的请求,并且因为数据是在URL中编码的,所以它只能用于数据量相对较小的请求(例如搜索查询)。您需要弄清楚如何让您的框架使用POST请求。@user1441251:我在MFC文档中为您做了一些探索,并找到了您至少必须使用的方法。
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");
    }
}