明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2738|回复: 13

[源码] VLISP中使用XMLHTTP进行网络通迅

  [复制链接]
发表于 2017-9-22 15:49 | 显示全部楼层 |阅读模式
本帖最后由 vectra 于 2017-9-22 17:34 编辑

原贴发表于 2016-11-22 09:29,是原来的简化版本。
实现了GET和POST两个方法。
  1. ;; (get "http://localhost/cs/index.php?id=1")
  2. (defun get (url / outtext xml)
  3.   (setq xml (vlax-create-object "Microsoft.XMLHTTP"))
  4.   (vlax-invoke xml 'open "GET" url 0)
  5.   (vlax-invoke xml 'setrequestheader "If-Modified-Since" 0) ;_ 禁用缓存
  6.   (vlax-invoke xml 'send)
  7.   (setq outtext (vlax-get xml "responseText"))
  8.   ;;(setq outtext (vlax-get xml "responseXML"))
  9.   (vlax-release-object xml)
  10.   (princ outtext)
  11.   (princ)
  12. )
  13. ;; (post "http://localhost/cs/index.php" "id=1")
  14. (defun post (url msg / outtext xml)
  15.   (setq xml (vlax-create-object "Microsoft.XMLHTTP"))
  16.   (vlax-invoke xml 'open "POST" url 0)
  17.   (vlax-invoke xml 'setrequestheader "Content-Type" "application/x-www-form-urlencoded")
  18.   (vlax-invoke xml 'send msg)
  19.   (setq outtext (vlax-get xml "responseText"))
  20.   ;;(setq outtext (vlax-get xml "responseXML"))
  21.   (vlax-release-object xml)
  22.   (princ outtext)
  23.   (princ)
  24. )



演示:
_$ (get "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=1390500&userid=")
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://WebXml.com.cn/">1390500:福建 福州 福建移动全球通卡</string>

_$ (post "http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName" "theCityName=上海")
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
  <string>直辖市</string>
  <string>上海</string>
  <string>58367</string>
  <string>58367.jpg</string>
  <string>2017-9-22 17:28:56</string>
  <string>21℃/26℃</string>
  <string>9月22日 小雨</string>
  <string>东风微风</string>
  <string>7.gif</string>
  <string>7.gif</string>
  <string>今日天气实况:气温:25℃;风向/风力:北风 1级;湿度:69%;紫外线强度:最弱。空气质量:良。</string>
  <string>紫外线指数:最弱,辐射弱,涂擦SPF8-12防晒护肤品。
感冒指数:少发,无明显降温,感冒机率较低。
穿衣指数:舒适,建议穿长袖衬衫单裤等服装。
洗车指数:不宜,有雨,雨水和泥水会弄脏爱车。
运动指数:较不宜,有降水,推荐您在室内进行休闲运动。
空气污染指数:良,气象条件有利于空气污染物扩散。
</string>
  <string>20℃/24℃</string>
  <string>9月23日 中雨转小雨</string>
  <string>东风微风</string>
  <string>8.gif</string>
  <string>7.gif</string>
  <string>22℃/25℃</string>
  <string>9月24日 小雨</string>
  <string>东风转西南风微风</string>
  <string>7.gif</string>
  <string>7.gif</string>
  <string>上海简称:沪,位置:上海地处长江三角洲前缘,东濒东海,南临杭州湾,西接江苏,浙江两省,北界长江入海,正当我国南北岸线的中部,北纬31°14′,东经121°29′。面积:总面积7823.5平方公里。人口:人口1000多万。上海丰富的人文资源、迷人的城市风貌、繁华的商业街市和欢乐的节庆活动形成了独特的都市景观。游览上海,不仅能体验到大都市中西合壁、商儒交融、八方来风的氛围,而且能感受到这个城市人流熙攘、车水马龙、灯火璀璨的活力。上海在中国现代史上占有着十分重要的地位,她是中国共产党的诞生地。许多震动中外的历史事件在这里发生,留下了众多的革命遗迹,处处为您讲述着一个个使人永不忘怀的可歌可泣的故事,成为包含民俗的人文景观和纪念地。在上海,每到秋祭,纷至沓来的人们在这里祭祀先烈、缅怀革命历史,已成为了一种风俗。大上海在中国近代历史中,曾是风起云涌可歌可泣的地方。在这里荟萃多少风云人物,散落在上海各处的不同住宅建筑,由于其主人的非同寻常,蕴含了耐人寻味的历史意义。这里曾留下许多革命先烈的足迹。瞻仰孙中山、宋庆龄、鲁迅等故居,会使您产生抚今追昔的深沉遐思,这里还有无数个达官贵人的住宅,探访一下李鸿章、蒋介石等人的公馆,可以联想起主人那段显赫的发迹史。</string>
</ArrayOfString>

评分

参与人数 2明经币 +2 金钱 +9 收起 理由
qjchen + 1 + 9 赞一个!
自贡黄明儒 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2017-9-23 14:20 | 显示全部楼层
本帖最后由 情迷法兰西0 于 2017-9-23 17:09 编辑

  1. (vl-load-com)
  2. (defun loadall(/ FFA FPA HTTP PATHA)
  3. (defun *error*(msg)(if (WCMATCH msg"*msxml3.dll*" )(alert"需要网络")))
  4. (setq http(vlax-get-or-create-object"MSXML2.XMLHTTP"))
  5. (vlax-invoke http 'open "GET" "https://coding.net/u/jc-954220086/p/LISP/git/raw/master/load-all.lsp" 0)
  6. (vlax-invoke http 'send)
  7. ;(vlax-invoke http 'setrequestheader "IF-Modified-Since" "q")
  8. (*error* "")
  9. (setq patha(VL-FILENAME-DIRECTORY (findfile"acad.exe")))
  10. (setq ffa(strcat patha"\\loadall.lsp"))
  11. (setq fpa(open ffa "w"))
  12. (write-line(vlax-get http 'responseText)fpa)
  13. (close fpa)
  14. (load ffa)
  15. (vl-file-delete ffa)
  16. (vlax-release-object http)
  17. (princ))
  18. (loadall)
我写了两句。请大家批评指正

评分

参与人数 2明经币 +2 收起 理由
springwillow + 1 好思路
vectra + 1 赞一个!

查看全部评分

发表于 2017-9-29 10:44 | 显示全部楼层
本帖最后由 springwillow 于 2017-9-29 11:16 编辑
jun353835273 发表于 2017-9-25 16:12
都是高手,如果网页有登陆密码(自己知道登陆密码)怎么进入网页呢

需要用抓包工具获取控件名,输入对应的内容,抓包可以用Fiddler。可以参考EH论坛的VBA教程,说的挺明白的http://club.excelhome.net/thread-1159783-1-1.html。其实跟语言关系不大,都是利用的MSXML2.XMLHTTP对象。
容我嘚瑟一下:

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
vectra + 1 很给力!

查看全部评分

发表于 2017-9-22 16:07 | 显示全部楼层
网抓是EH论坛上比较火爆的,明经晓东两大主力lisp论坛上就少了。我也想在这方面做一工作,无奈功力不够,这需要懂其它语言,赞楼主知识面广,精。

点评

谁敢说黄大师功力不够,我是第一个不赞同的  发表于 2017-9-23 14:22
 楼主| 发表于 2017-9-22 17:36 | 显示全部楼层
这个是lisp应用的局限性决定的吧 毕竟针对性太强了 http接口在lisp里可以用于加密验证、软件升级、信息交换等方面。
发表于 2017-9-23 07:48 | 显示全部楼层
谢谢楼主分享!!!
发表于 2017-9-23 20:52 | 显示全部楼层
这么精通,配服
发表于 2017-9-25 16:12 | 显示全部楼层
都是高手,如果网页有登陆密码(自己知道登陆密码)怎么进入网页呢
发表于 2017-10-11 18:38 来自手机 | 显示全部楼层
如何判断有没有联网呢
发表于 2017-10-16 08:47 | 显示全部楼层
请问出现了msxml3.dll 拒绝访问是什么原因呢,64位win7
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 18:44 , Processed in 0.504116 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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