gpt4 book ai didi

c - 使用 Wininet 发送多个 Http 请求

转载 作者:行者123 更新时间:2023-11-30 17:01:46 29 4
gpt4 key购买 nike

所以我做了这个简单的例子:我从客户端 PC 发送一个 http 请求,该请求在树莓派上执行 php 脚本来计算目录中的文件数量,然后发送第二个请求,执行 php 脚本来删除它们,然后再次检查第一个脚本以确保其有效。

问题是,我第二次询问文件数量时,它返回我第一次调用该函数的结果,删除文件的脚本也起作用。我在网络上使用wireshark,实际上看到第二个对文件进行计数的请求没有发送,我不明白为什么,是我的代码吗?或者来自http协议(protocol)?

这是我的代码,只有2个请求来计算ADL文件的数量,只有这样我才能在wireshark上看到仅根据请求发送:

#include "MA_DLLCPP.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <wininet.h>
#include <string.h>


int main(int argc, char* argv[])
{
int error = 0;
char* result = 0;
DWORD dwBytes;
char ch [100] = "0";
char ligne [100] = "";
char ligne1 [100] = "";
HINTERNET Initialize,Connection,File;

//Création de la session internet
Initialize = InternetOpenA("pi",INTERNET_OPEN_TYPE_DIRECT,"","",0);

if(Initialize == NULL) return 1;

//Connection HTTP serveur-client
Connection = InternetConnectA(Initialize,"192.168.1.2",INTERNET_DEFAULT_HTTP_PORT,
NULL,NULL,INTERNET_SERVICE_HTTP,0,0);




strcat(ligne, "IHM_DLD/services/");
strcat(ligne, "getADL");
strcat(ligne, ".php");

//Création de la requete HTTP
File = HttpOpenRequestA(Connection, "GET",ligne,NULL,NULL,NULL,0,0);

if(File == NULL) return 3;


//Envoi de la requete HTTP
if(HttpSendRequestA(File,NULL,0,NULL,0) == FALSE) return 4;

//Lecture de la réponse du serveur
if(InternetReadFile(File,&ch,1,&dwBytes) == FALSE) return 5;

while(InternetReadFile(File,&ch,1,&dwBytes))
{
// cas d'erreur en cas d'absence de retour
if(dwBytes != 1) break;

printf("%s",ch);

}


InternetCloseHandle(File);
InternetCloseHandle(Connection);
InternetCloseHandle(Initialize);

//Connection HTTP serveur-client
Connection = InternetConnectA(Initialize,"192.168.1.2",INTERNET_DEFAULT_HTTP_PORT,
NULL,NULL,INTERNET_SERVICE_HTTP,0,0);

//Création de la requete HTTP
File = HttpOpenRequestA(Connection, "GET",ligne,NULL,NULL,NULL,0,0);

if(File == NULL) return 3;


//Envoi de la requete HTTP
if(HttpSendRequestA(File,NULL,0,NULL,0) == FALSE) return 4;

//Lecture de la réponse du serveur
if(InternetReadFile(File,&ch,1,&dwBytes) == FALSE) return 5;

while(InternetReadFile(File,&ch,1,&dwBytes))
{
// cas d'erreur en cas d'absence de retour
if(dwBytes != 1) break;

printf("%s",ch);

}




InternetCloseHandle(File);
InternetCloseHandle(Connection);
InternetCloseHandle(Initialize);

最佳答案

听起来像 chaching effect大部头书。第二次请求在您的计算机上本地处理。

我从未使用过它,但通过了INTERNET_FLAG_NO_CACHE_WRITEHttpOpenRequestdwFlags 参数中看起来应该可以解决问题...

您也可以看看这篇文章:How to clear MSIE/WinInet cache programatically?

关于c - 使用 Wininet 发送多个 Http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com