2016-04-24 128 views
0

所以我做了这个简单的例子:我发送一个客户端PC上执行一个php脚本在树莓派上的http请求来计算一个目录中的文件数,然后执行一个php的第二个请求脚本删除它们,然后再次运行第一个脚本以确保其正常工作。使用Wininet发送多个Http请求

问题是我第二次询问文件的数量时,它返回第一次调用函数的结果,还有脚本删除了工作的文件。我在网络上使用wireshark,并且实际上看到第二次请求计数文件未发送,我不明白为什么,它是我的代码?或从http protocole?

这里是我的代码,只存在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); 

回答