找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1458|回复: 1

[系统] (XD::InterNet:GetUrlHeader)获取网址文件头内容

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-3-16 12:38:36 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::InterNet:GetUrlHeader
调用格式: (XD::InterNet:GetUrlHeader url header)
参数说明: url --- url 网址
header --- 头内容关键字
返回值: 字符串 or nil
函数简介: 获取网址文件头内容
函数来源: 原创
函数作者: maring
适用版本: 不限 
最后更新时间: 2018-03-16
备注: 头内容有 DATE,Content_Length....,见HTTP帮助
命令: (xd::internet:geturlheader "http://baidu.com" "date")
"Fri, 16 Mar 2018 04:37:07 GMT"
演示图片: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 marting 于 2018-3-16 14:38 编辑

  1. (defun XD::InterNet:GetUrlHeader (url header / objHTTP Result)
  2.   (if (setq objHTTP (vlax-create-object "WinHTTP.WinHTTPRequest.5.1"))
  3.     (progn (setq Result        (vl-catch-all-apply
  4.                           (function
  5.                             (lambda ()
  6.                               (vlax-invoke-method
  7.                                 objHTTP        "Open" "HEAD" url :vlax-false)
  8.                               (vlax-invoke objHTTP "Send")
  9.                               (if (= (vlax-get-property objHTTP "Status") 200)
  10.                                 (vlax-invoke-method
  11.                                   objHTTP
  12.                                   "GetResponseHeader"
  13.                                   header
  14.                                 )
  15.                               )
  16.                             )
  17.                           )
  18.                         )
  19.            )
  20.            (vlax-release-object objHTTP)
  21.            (if (and Result (not (vl-catch-all-error-p Result)))
  22.              result
  23.            )
  24.     )
  25.   )
  26. )


获取INTERNET时间:
命令: (xd::internet:geturlheader "http://baidu.com" "date")
"Fri, 16 Mar 2018 04:37:07 GMT"

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2226个

财富等级: 金玉满堂

发表于 2021-2-6 17:02:10 | 显示全部楼层
本帖最后由 cable2004 于 2021-2-6 18:30 编辑

能改成arx版本获取网络时间吗?
  1.     DWORD dwSize = 0;
  2.     DWORD dwDownloaded = 0;
  3.     LPSTR pszOutBuffer;
  4.     BOOL  bResults = FALSE;
  5.     HINTERNET  hSession = NULL,
  6.                hConnect = NULL,
  7.                hRequest = NULL;

  8.     // Use WinHttpOpen to obtain a session handle.
  9.     hSession = WinHttpOpen( L"WinHTTP Example/1.0",  
  10.                             WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
  11.                             WINHTTP_NO_PROXY_NAME,
  12.                             WINHTTP_NO_PROXY_BYPASS, 0);

  13.     // Specify an HTTP server.
  14.     if (hSession)
  15.         hConnect = WinHttpConnect( hSession, L"www.baidu.com",
  16.                                    INTERNET_DEFAULT_HTTPS_PORT, 0);

  17.     // Create an HTTP request handle.
  18.     if (hConnect)
  19.         hRequest = WinHttpOpenRequest( hConnect, L"GET", NULL,
  20.                                        NULL, WINHTTP_NO_REFERER,
  21.                                        WINHTTP_DEFAULT_ACCEPT_TYPES,
  22.                                        WINHTTP_FLAG_SECURE);

  23.     // Send a request.
  24.     if (hRequest)
  25.         bResults = WinHttpSendRequest( hRequest,
  26.                                        WINHTTP_NO_ADDITIONAL_HEADERS,
  27.                                        0, WINHTTP_NO_REQUEST_DATA, 0,
  28.                                        0, 0);


  29.     // End the request.
  30.     if (bResults)
  31.         bResults = WinHttpReceiveResponse( hRequest, NULL);

  32.     // Keep checking for data until there is nothing left.
  33.     if (bResults)
  34.     {
  35.         do
  36.         {
  37.             // Check for available data.
  38.             dwSize = 0;
  39.             if (!WinHttpQueryDataAvailable( hRequest, &dwSize))
  40.             {
  41.                 printf( "Error %u in WinHttpQueryDataAvailable.\n",
  42.                         GetLastError());
  43.                 break;
  44.             }
  45.             
  46.             // No more available data.
  47.             if (!dwSize)
  48.                 break;

  49.             // Allocate space for the buffer.
  50.             pszOutBuffer = new char[dwSize+1];
  51.             if (!pszOutBuffer)
  52.             {
  53.                 printf("Out of memory\n");
  54.                 break;
  55.             }
  56.             
  57.             // Read the Data.
  58.             ZeroMemory(pszOutBuffer, dwSize+1);

  59.             if (!WinHttpReadData( hRequest, (LPVOID)pszOutBuffer,
  60.                                   dwSize, &dwDownloaded))
  61.             {                                 
  62.                 printf( "Error %u in WinHttpReadData.\n", GetLastError());
  63.             }
  64.             else
  65.             {
  66.                 printf("%s", pszOutBuffer);
  67.             }
  68.         
  69.             // Free the memory allocated to the buffer.
  70.             delete [] pszOutBuffer;

  71.             // This condition should never be reached since WinHttpQueryDataAvailable
  72.             // reported that there are bits to read.
  73.             if (!dwDownloaded)
  74.                 break;
  75.                
  76.         } while (dwSize > 0);
  77.     }
  78.     else
  79.     {
  80.         // Report any errors.
  81.         printf( "Error %d has occurred.\n", GetLastError() );
  82.     }

  83.     // Close any open handles.
  84.     if (hRequest) WinHttpCloseHandle(hRequest);
  85.     if (hConnect) WinHttpCloseHandle(hConnect);
  86.     if (hSession) WinHttpCloseHandle(hSession);
复制代码

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-25 16:00 , Processed in 0.387806 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表