获取没有C扩展/库的URL
我在RPG Maker VX Ace的背景下工作。 它有一些Ruby扩展,它有一个内置的Ruby 1.8库的子集。它还允许我添加自己的.rb文件 – 例如Ruby 1.9.3源文件 – 虽然我不能使用任何代码有C扩展名。 如果它需要.so文件,它将无法工作 – 我将收到一个错误,“此应用程序无法加载扩展/插件。”
理解了这一点后,我需要一些方法来发出HTTP请求。 我的意思是:
- 调用URL(例如http://myserver.com/blah?data=abcd
- 返回响应(将是一个字符串 – 不是完整的HTML,只是某种标识符)
我尝试过使用open-uri
和net/http
。 它们都有不同的问题阻止我使用。 一个(我认为它是后者)需要TcpSocket
,它是用C实现的,而不是“纯粹的”Ruby。 另一个给我一个关于与套接字相关的未定义常量的错误。
我也试过使用Socket
类,它给了我一个类似的错误。
TLDR:有没有办法用纯Ruby进行Ruby HTTP调用,没有C扩展 ? 这就是我需要的。
我通过编写一些代码并从Ruby调用它来解决这个问题。 轻松活泼的。
使用.NET,我创建了一个非命令行的非服务应用程序; 我可以像命令行应用程序一样调用的东西,但没有命令行窗口。 去做这个:
- 创建一个新的命令行项目
- 转到项目属性
- 将类型更改为“Windows窗体应用程序”
当你运行你的项目时,它将像任何命令行项目(args等)一样运行,但不会出现任何窗口。
从那里,很容易发出异步HTTP请求并将响应存储在文本文件中。 这已经足够了。
你可以调出一个shell并执行curl(取决于你的环境和你想要的速度)
result = `curl "http://myserver.com/blah?data=abcd" -s`
-s使curl保持沉默。 看看是否会停止dos框出现。