设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2124|回复: 4
打印 上一主题 下一主题

[已经解决] 求RM可用的HTTP GET

[复制链接]

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
624
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

跳转到指定楼层
1
发表于 2010-8-21 15:15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

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

x
所谓的HTTP GET就是访问一个网页并且读取内容

ruby里的http类需要加载socket.so,这个RM加载不了
我把从网游脚本里抠出来的socket类塞进来也不能用,看起来是执行gethostbyname那个API的时候失败(返回0)

求RM可用的HTTP GET

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

2
发表于 2010-8-21 15:38:30 | 只看该作者
用 WSAGetLastError 获取错误代码看看~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2010-6-26
帖子
404

第5届短篇游戏比赛季军

3
发表于 2010-8-21 16:07:19 | 只看该作者
  1. class Get_Http_Info

  2. AGENT = "RGSS PLAYER"
  3. INTERNET_OPEN_TYPE_PRECONFIG = 0 # IEの設定を仕様
  4. INTERNET_OPEN_TYPE_DIRECT = 1 # プロキシを使用しない
  5. def Get_Http_Info.InternetOpen()
  6. io = Win32API.new('wininet', 'InternetOpen', %(p, l, p, p, l), 'l')
  7. hInternet = io.call(AGENT, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
  8. return hInternet
  9. end

  10. def Get_Http_Info.InternetOpenUrl(hSession, url)
  11. iou = Win32API.new('wininet', 'InternetOpenUrl', %(l, p, p, l, l, l), 'l')
  12. hService = iou.call(hSession, url, nil, 0, 0, 0)
  13. return hService
  14. end

  15. def Get_Http_Info.InternetReadFile(hService)
  16. content = ""
  17. read_size = 1024 # 一次读入文件的尺寸
  18. irf = Win32API.new('wininet', 'InternetReadFile', %(l, p, i, p), 'i')
  19. while(true)
  20. buf = "\0" * read_size
  21. red = [0].pack('L')
  22. irf.call( hService, buf, read_size, red )
  23. if(red.unpack('L') == [0])
  24. #读到文件末端
  25. break
  26. end
  27. buf.delete!("\0")
  28. content += buf
  29. end

  30. return content
  31. end

  32. HTTP_QUERY_STATUS_CODE = 19

  33. def Get_Http_Info.HttpQueryInfo(hService)
  34. read_size = 1024
  35. buf = "\0" * read_size
  36. red = [read_size-1].pack('L')
  37. hqi = Win32API.new('wininet', 'HttpQueryInfo', %(l, l, p, p, p), 'i')
  38. isOk = hqi.call( hService, HTTP_QUERY_STATUS_CODE, buf, red, nil)
  39. buf.delete!("\0")
  40. return buf
  41. end

  42. def Get_Http_Info.InternetCloseHandle(hInternet)
  43. ich = Win32API.new('winInet', 'InternetCloseHandle', %(l), 'i')
  44. isOk = ich.call(hInternet)
  45. return isOk
  46. end

  47. HTTP_CODE_OK = "200"

  48. def Get_Http_Info.get_info(url)
  49. info = nil
  50. begin
  51. hInternet = InternetOpen()
  52. if(hInternet != 0)
  53. hService = InternetOpenUrl(hInternet, url)
  54. if(hService != 0)
  55. status_code = HttpQueryInfo(hService)
  56. if(status_code == HTTP_CODE_OK)
  57. info = InternetReadFile(hService)
  58. end
  59. InternetCloseHandle(hService)
  60. end
  61. InternetCloseHandle(hInternet)
  62. end
  63. rescue
  64. # 例外发生
  65. return nil
  66. end

  67. ary = []

  68. info.each_line do |line|
  69. next if line.empty?
  70. ary.push line
  71. end

  72. return ary[271].scan(/\w+<\/a>/)

  73. end


  74. def Get_Http_Info.get_html(url)
  75. info = nil
  76. begin
  77. hInternet = InternetOpen()
  78. if(hInternet != 0)
  79. hService = InternetOpenUrl(hInternet, url)
  80. if(hService != 0)
  81. status_code = HttpQueryInfo(hService)
  82. if(status_code == HTTP_CODE_OK)
  83. info = InternetReadFile(hService)
  84. end
  85. InternetCloseHandle(hService)
  86. end
  87. InternetCloseHandle(hInternet)
  88. end
  89. rescue
  90. # 例外发生
  91. return nil
  92. end
  93. return info
  94. end
  95. end
复制代码
鄙视楼主这类的SSD!!哼!!

评分

参与人数 1星屑 +300 收起 理由
zh99998 + 300 认可答案

查看全部评分

Fijoy游戏引擎:http://www.fijoy.com/
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
624
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

4
 楼主| 发表于 2010-8-21 16:30:40 | 只看该作者
回复 尘羽泯 的帖子


谢谢><
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
5
发表于 2010-8-22 01:03:01 | 只看该作者
RM 的 socket 用不了还有 Windows 的 socket
不过二楼给的那个脚本倒是足够了,叶子的《6R之眼》里用到过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-13 06:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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