我还没有太多的信息来处理。我们的应用程序向我们的服务器发送一个HTTP查询,在我们使用到现在的所有情况下,它都工作得很好。但是对于一个客户机,其网络通过一个代理,他们的日志表明请求成功地发出,但是没有任何回复返回,并且我们的web服务器在日志中没有显示接收到任何东西(在失败发生的时间段,日志中的所有内容都是从安装程序中下载一个ZIP文件(我下面提到)。对于他们网络中的任何人来说,这种情况都是始终如一的。
一件奇怪的事情是,应用程序的安装程序发送了一个对ZIP文件的HTTP请求,它很好地完成了,但是在启动应用程序时,它的第一个请求(对PHP文件)失败了。它们共享用于发出请求的相同基本代码,但只是发送不同的参数。我一直在想这两个电话到底有什么不同,基本上可以归结为:
-
一个请求zip文件,另一个向php文件发送参数;文件类型过滤?
-
失败的一个添加了一些额外的头参数。我可以理解他们是否被代理剥离,但如果它有自定义/不支持的头,它是否可以完全删除请求?
HINTERNET hInternetOpen = InternetOpen( szAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
HINTERNET hInternetConnect = InternetConnect( hInternetOpen, "www.server.com", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, 0 );
HINTERNET hRequest = HttpOpenRequest( hInternetConnect, "GET", "path/query.php?params=etc", NULL, NULL, "*/*", INTERNET_FLAG_RELOAD, 0 );
// Here I was including some custom headers, such that szHeaders would look something like:
// "KEY:12345\nTZ:New_York\n"
HttpSendRequest( hRequest, szHeaders, dwHeadersLen, NULL, 0 );
InternetReadFile( hRequest, lpBuf, dwBufSize, &dwAmtRead );
我将建立一个新的构建,它将提供更多的错误检查,以找出请求失败的部分和返回的错误代码。它还将消除自定义的头文件,以及此文件和安装程序之间的任何其他不一致之处。
我真的不太相信这些东西真的是原因,所以在此期间,我在寻找关于可能出错的猜测,或者我应该仔细检查或注意哪些事情。我最初确信这只是他们锁定的网络的过滤问题,但通过与他们的it组交谈,他们并没有阻止它发出的请求。也许我在做一些不规范的事情。