通过“WinHttp.WinHttpRequest.5.1”的 Mantis BT 导出请求
我的老板要求我将公司的 Mantis bug 数据库导出到 Excel,但他无法让我访问 SQL Server,并且该过程必须自动化。
我唯一可以使用的是 Excel(没有 ODBC,没有手动导出)。
所以我设法做到了这一点:
Dim webClient As Object
Dim i As Long, vFF As Long, oResp() As Byte
Dim vLocalFile As String
Dim username As String, password As String
username = "blahblah"
password = "blahblah"
Set webClient = CreateObject("WinHttp.WinHttpRequest.5.1")
// Opening the connection to the application with a POST, containing user, password, and "permanent login" checked
webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/login.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("username=" & username & "&password=" & password & "&perm_login=on")
// Now I set the "project" to "All Projects" (as I want the view to display our 2200 bugs)
webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/set_project.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("project_id=0")
// The problem is, the last query displays 624 bugs instead of 2200, but I noticed when I click on "Advanced Filters" it successfully show the 2200 bugs (tested under a web browser AND Excel : the ResponseText shows them)
webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/view_all_set.php?type=6&view_type=advanced", False
webClient.send
// And NOW I can download the CSV file... (and that's where something is wrong *)
webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/csv_export.php", False
webClient.send
oResp = webClient.responseBody
// Creating a file and then filling it...
vFF = FreeFile
vLocalFile = "_mantis_export.csv"
If Dir(vLocalFile) <> "" Then Kill vLocalFile
Open vLocalFile For Binary As #vFF
Put #vFF, , oResp
Close #vFF
// Freeing memory
Set webClient = Nothing
(*:cf代码)之前的行,ResponseText显示“2200个错误”,所以一切都很好,直到最后一个查询(csv_export.php)。 当通过浏览器调用该脚本时,该脚本显示的内容与调用它的页面完全相同(如果页面显示 2 个错误,则 CSV 将包含 2 个错误)。 由于我在 IE / Firefox 中显示了 2200 个错误,因此 CSV 为我带来了 2200 个错误。 但在 Excel 中,即使 ResponseText 显示 2200 个错误,CSV 也会给我带来 624 个错误......就好像我没有调用“高级过滤器”页面:(
我希望有人能够理解并帮助我;)
提前致谢,
大卫
My boss asked me to export the corp's Mantis bugs database to Excel, but he can't give me access to the SQL Server, and the process has to be automated.
The ONLY thing I can use is Excel (no ODBC, no manual export).
So I managed to do this :
Dim webClient As Object
Dim i As Long, vFF As Long, oResp() As Byte
Dim vLocalFile As String
Dim username As String, password As String
username = "blahblah"
password = "blahblah"
Set webClient = CreateObject("WinHttp.WinHttpRequest.5.1")
// Opening the connection to the application with a POST, containing user, password, and "permanent login" checked
webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/login.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("username=" & username & "&password=" & password & "&perm_login=on")
// Now I set the "project" to "All Projects" (as I want the view to display our 2200 bugs)
webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/set_project.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("project_id=0")
// The problem is, the last query displays 624 bugs instead of 2200, but I noticed when I click on "Advanced Filters" it successfully show the 2200 bugs (tested under a web browser AND Excel : the ResponseText shows them)
webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/view_all_set.php?type=6&view_type=advanced", False
webClient.send
// And NOW I can download the CSV file... (and that's where something is wrong *)
webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/csv_export.php", False
webClient.send
oResp = webClient.responseBody
// Creating a file and then filling it...
vFF = FreeFile
vLocalFile = "_mantis_export.csv"
If Dir(vLocalFile) <> "" Then Kill vLocalFile
Open vLocalFile For Binary As #vFF
Put #vFF, , oResp
Close #vFF
// Freeing memory
Set webClient = Nothing
(* : cf the code) The line before, the ResponseText showed "2200 bugs", so everything was fine until the last query (csv_export.php). The script, when called via a browser, shows exactly the same as the page which called it (if the page showed 2 bugs, the CSV will contain 2 bugs). With my 2200 bugs shown in IE / Firefox, the CSV brings me 2200 bugs.
But in Excel, even if the ResponseText shows 2200 bugs, the CSV brings me 624 bugs... As if I hadn't called the "Advanced Filter" page :(
I hope someone can understand and help me ;)
Thanks in advance,
David
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许使用 SOAP API 对您来说会更容易? 入口点位于 http://server/mantis/api/soap/mantisconnect.php。
Perhaps it would be easier for you to use the SOAP API? The entry point is at http://server/mantis/api/soap/mantisconnect.php .