Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用curl或Python生成Tableau可信票据?_Python_Curl_Python Requests_Tableau Api - Fatal编程技术网

使用curl或Python生成Tableau可信票据?

使用curl或Python生成Tableau可信票据?,python,curl,python-requests,tableau-api,Python,Curl,Python Requests,Tableau Api,我正在一个门户网站上工作,该网站将使用Tableau Trusted Ticket authentication(),但在生成票证时遇到一些问题 在继续开发之前,我想验证的一件事是,我将使用的web服务器已经被正确地列为白名单,用于生成受信任的票证请求 我已经运行了如上所述的白名单命令,但是我的PHP开发人员的代码不断返回-1,表示失败 如果Tableau需要生成并返回一个可信票证代码的全部内容都是HTTP POST,那么我想我应该能够通过curl来测试这一点。考虑到有多少web服务器是基于Li

我正在一个门户网站上工作,该网站将使用Tableau Trusted Ticket authentication(),但在生成票证时遇到一些问题

在继续开发之前,我想验证的一件事是,我将使用的web服务器已经被正确地列为白名单,用于生成受信任的票证请求

我已经运行了如上所述的白名单命令,但是我的PHP开发人员的代码不断返回
-1
,表示失败

如果Tableau需要生成并返回一个可信票证代码的全部内容都是HTTP POST,那么我想我应该能够通过curl来测试这一点。考虑到有多少web服务器是基于Linux的,我有点惊讶它没有被建议作为故障排除步骤

是否有人知道发送测试帖子以生成票证的正确方法,只是为了验证白名单?因为我对curl和Python不太熟悉,所以我尝试了它们(Python使用requests模块),但没有成功

卷曲版本:

curl --data "username=exampleuser" http://webserver.example.com/trusted
Python版本:

import requests
url = "http://webserver.example.com/trusted"
postdata = "username=exampleuser"
r = requests.post(url, postdata)
print r.text
这两个都返回一个
-1
,这可能是因为白名单以某种方式失败了,也可能是因为这些请求的格式不正确。有没有人尝试过类似的方法并取得了成功

相反,是否有人拥有正确的
POST
请求的明文字符串


有一大块有用的HTML和JavaScript,我已经能够用它们成功地生成票证,但由于它是基于JavaScript的,我还没有找到一种方法在我的headless Web服务器上运行它,或者捕获它发送的请求进行分析。

因此,首先,当使用curl处理动词时,您必须使用
-X VERBNAME
,例如

~# curl -X POST http://httpbin.org/post
{
  "url": "http://httpbin.org/post",
  "data": "",
  "json": null,
  "args": {},
  "form": {},
  "origin": "127.0.0.1",
  "headers": {
    "User-Agent": "curl/7.19.6 (x86_64-unknown-linux-gnu) libcurl/7.19.6 OpenSSL/0.9.8n zlib/1.2.3 libidn/1.5",
    "Connection": "close",
    "Accept": "*/*",
    "Content-Length": "0",
    "Host": "httpbin.org"
  },
  "files": {}
}
其次,在提到参数时,我将尝试以下变化:

import requests

# Variation 1
r = requests.post(url, data={'username': 'exampleuser'})

# Variation 2
r = requests.post(url, params={'username': 'exampleuser'})

# Followed by these lines
print r.status_code
print r.text
cURL中的等效项应如下所示:

# Variation 1 equivalent
curl --data='username=exampleuser' -X POST http://httpbin.org/post

# Variation 2 equivalent
curl -X POST http://httpbin.org/post?username=exampleuser

第二行我猜这应该是一个
应用程序/x-www-form-urlencoded
POST
请求,所以这两个请求的第一个变体应该都可以工作。不过我对tableau一点也不熟悉,所以我不能保证这两种方法都能奏效。

Eureka!谢谢你的帮助。Python代码变体#1和#2都可以工作;显然,我试图用参数来完成请求的工作。使用来自不同主机的参数,我能够确认确实存在白名单问题,并且能够纠正它。一旦我这么做了,我就能够验证我最初的curl命令是否有效——我只是没有从一个正确清除的主机上尝试过。现在可以了。显然--data选项意味着POST,所以我不需要显式地添加“-X POST”。@Dave TIL。我总是在显式动词中使用curl。此外,我还使用PUT、DELETE和其他动词来表示数据,所以我通常需要这样做。很高兴我能帮忙。