Tag: http

Excel VBA:NTLM / Kerberos和VBA-Web / WinHttp协商身份validation

我想使用数字证书(.PFX文件)(NTLM身份validation)或使用Windows域身份validation(Kerberos和协商身份validation)来与要求身份validation的网站(在EXCEL VBA中)的REST API进行交互。 后者是首选,但我也不知道怎么做,我希望有人可以分享如何做这些authentication的代码。 我不能使用其他authentication方法(例如基本),因为它不被支持。 目前我正在使用VBA-Web(github:VBA-tools:VBA-Web),而且我已经设法与api进行交互,但是方式非常奇怪。 我跟踪了Chrome浏览器到网站的networking电话,并注意到它将cookies添加到每个电话的标题中。 因此,在我的要求中,我补充说: webrequest.SetHeader "Cookie", "server.com.au=35558896564.55846.54545; SDASESSION=AQISFCwMasdffczd6afASFVHfgfgsdf%2BG35FsE%3D%40AAJTSwAJSDFSDTkMw%3D%3D%23; amlbcookie=07; JSESSIONID=000f:19pcqj2d1; server2.com.au=484566584.454584.41545" 但是,这显然是烦人的,而不是用户友好的 – 因为每次我想要使用我的Excel VBA代码,我必须findcookies。 此外,在Chrome中跟踪authentication的networking调用之后,我注意到它经历了各种redirect,在redirect时收集所有的cookie。 在一个特定的呼叫期间,它进行“协商”authentication。 VBA-Web似乎是基于WinHTTP的,所以我环顾四周,我真的迷失在如何与WinHTTP(或WinINet等)接口来做这些authentication。 我已经看了setCredentials方法( https://msdn.microsoft.com/en-us/library/windows/desktop/aa384112(v=vs.85).aspx ),但我不知道什么用户名密码是NTLM还是Negotiate? 另外,我试过使用数字证书,但由于我有一个PFX文件,我不知道如何直接使用它。 我已经看到https://msdn.microsoft.com/en-us/library/windows/desktop/aa384055(v=vs.85).aspx但我不完全确定在安装PFX后我的证书存储在哪里。 我在安装过程中select个人,这是否意味着它在LOCAL_MACHINE \个人? 更重要的是,我不知道主题名称是什么。 Microsoft文档是用C ++或JScript编写的,所以对我也没有帮助。 所以,如果我能够validation和获取cookie,那么其余的应该没问题。 我如何用Excel中的两种身份validation方法中的任何一种来使用VBA? PS我希望我的问题很清楚。 随意要求澄清。 我发现所有的答案都恢复到基本authentication,但我不能这样做。 我将与您分享我正在尝试与之交互的网站,但它在Intranet上。

当我运行程序时,HTTP请求会冻结,但是当我介入时,HTTP请求不会冻结

该程序从Excel工作簿运行,获取值的列表,build立一个查询string,并将其传递给这一块代码 Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0") xmlHttp.Open "GET", connectionstring, False xmlHttp.setRequestHeader "Content-Type", "text/xml" xmlHttp.send Dim html As Object Set html = CreateObject("htmlfile") html.body.innerHTML = xmlHttp.ResponseText 这是一个循环的一部分,所以它被执行很多次。 如果我进入代码并逐行执行,没有问题,但是当我运行它时,它冻结在xmlHttp.send行上,不是在第一个循环,而是在循环中间的某处(第10次执行也许)。 我是否必须告诉它等待特别提醒? 有任何想法吗? 谢谢

导入自定义协议到MS Excel / Access中

我有一个独立的Java应用程序能够重放时间序列的数据logging。 与服务器的通信使用TCP / IP上定制的二进制线协议进行。 我们有一个要求,能够轻松地从这个应用程序导入数据logging到MS Excel / Access中,我有兴趣推荐这样做。 我们正在探索的一个想法是编写一个Web“包装”服务(也是在Java中),它将与底层服务器通信,然后将二进制数据转换为Excel / Access使用的更友好的文本格式。 然而,这里的缺点是我们失去了与给定logging中每个字段相关的任何types的信息。 我简要介绍了编写自定义的ODBC / OleDB驱动程序,但这看起来很复杂,可能是我们试图达到的目标。 任何人都可以推荐其他方法吗?

无法打开通过Django视图作为附件返回的XLS

我使用xlwt来生成一个Excel文件,我在Django视图的HttpResponse中作为附件返回。 from django.http import HttpResponse def my_view(request): … workbook = xlwt.Workbook(encoding='utf-8') #write my workbook data here workbook.save(#absolute_path_here) response = HttpResponse(mimetype='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=worksheet.xls' return response 该文件被保存到我指定的path,我可以从磁盘正确打开文件,数据存在。 但是,当我尝试从文件下载提示中使用Excel打开文件时,我迎接: 你试图打开的文件“worksheet.xls”,格式与文件扩展名不同。 打开文件之前,validation该文件是否已损坏并且来自受信任的来源。 你想现在打开文件吗? 而Excel文件没有数据。 我究竟做错了什么?

HTTP GET用空体来响应,在IE下载excel文件

我试图找出当我下载一个Excel报告时,在这个页面上发生了什么。 它只适用于Internet Explorer,当我尝试使用ScalaJ在Scala中下载报告时,响应正文的inputstream为空。 有人能帮我理解这里发生了什么吗? 明文请求: GET /oca_ReportViewer.aspx?ReportName=District_and_Statutory_County_Court/DSC_Civil_Family_Activity_Detail_N.rpt&ddlFromMonth=9&ddlFromYear=2010&txtFromMonthField=@FromMonth&txtFromYearField=@FromYear&ddlToMonth=10&ddlToYear=2010&txtToMonthField=@ToMonth&txtToYearField=@ToYear&ddlCountyPostBack=0&txtCountyPostBackField=@CountyID&chkAggregateMonthlyReport=0&export=1625 HTTP/1.1 Accept: text/html, application/xhtml+xml, image/jxr, */* Referer: http://card.txcourts.gov/ReportSelection.aspx Accept-Language: en-US User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Accept-Encoding: gzip, deflate Host: card.txcourts.gov Connection: Keep-Alive Cache-Control: no-cache Cookie: ASP.NET_SessionId=j0tgci45qj3t1uqygrvkqz55 到目前为止的代码: import java.io.{BufferedOutputStream, FileOutputStream, FileWriter, InputStream} import scalaj.http._ object Downloader extends App { val url = "http://card.txcourts.gov/oca_ReportViewer.aspx" […]

使用Python urllib2 / requestsvalidationGoogle Drive并下载电子表格

我想要下载我在Google云端硬盘中对Google进行身份validation的文档(我只希望某些用户能够访问它,而不希望将其发布到网上)。 我曾尝试使用requests但显然我做错了什么。 从浏览器中,我可以将我的文档下载到地址https://docs.google.com/spreadsheets/d/<document key>/export?format=xls 。 所以在我的Python脚本中,我执行以下操作: import os import requests import shutil from requests.auth import HTTPBasicAuth remote = "https://docs.google.com/spreadsheets/d/<document key>/export?format=xls" username = os.environ['GOOGLEUSERNAME'] password = os.environ['GOOGLEPASSWORD'] r = requests.get(remote, auth=HTTPBasicAuth(username,password)) if r.status_code == 200: with open("document.xls","wb") as f: shutil.copyfileobj(r.raw, f) 但是生成的document.xls是空的。 我究竟做错了什么?

从Web服务导入CSV数据到Excel

我写了一个简单的Web服务,返回大量的CSV数据。 我将使用Excel的“Data From Web”函数以表格forms将其导入到Excel中。 有没有办法让Excel自动分析作为导入操作的一部分返回到单个列中的csv字段? 目前我唯一的方法是先将数据导入到一个列中,然后编写VBA代码来select数据并使用TextToColumns对其进行TextToColumns 。 这感觉凌乱/容易出错。 我的另一种select是修改Web服务器以HTMLforms提供数据。 不过,我不愿意这样做,因为在每个csv字段周围添加标签会极大地影响返回的数据量。

Apache POI输出问题

我有一个Apache POI的问题。 我在处理完相关数据后试图返回一个文件。 当我将文件返回到浏览器(包括IE8 / 9,Firefox)时,浏览器会返回一个垃圾字符。 这只发生在Excel文件很大并且进程已经运行了2分钟以上的情况下。 否则,它返回一个文件,我可以在Excel中打开。 任何帮助表示赞赏,谢谢。 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xls\""); OutputStream out = null; try { out = new BufferedOutputStream(response.getOutputStream()); wb.write(out); out.flush(); } catch (IOException ex) { ex.printStackTrace(); }

在Excel中执行HTTP发布并parsing结果

我可以访问一个API。 API将XMLpost作为input,然后返回包含相关数据的XML响应。 我要 发送HTTP POST到服务器(身份validation和请求将一起发送) 接收响应(要返回的选项之一是CSV或XML) 将数据插入适当的行和列,然后使用数据透视表执行数据分析。 我没有在Excel中的编程背景,但对不同的网页脚本语言,HTML,CSS,Javascript等感到舒服。 有任何想法吗?