GET请求通过Python工作,但不通过邮递员

时间:2016-03-17 06:15:14

标签: python rest virtualenv postman mailman

我正在尝试使用Mailman 3 REST API,但我需要在Java类中从Spring的Rest模板中调用它,或者从Postman进行测试。 在Python中,我可以通过以下方式调用API:

>>> from httplib2 import Http
>>> headers = {
...     'Content-Type': 'application/x-www-form-urlencode',
...     'Authorization': 'Basic cmVzdGFkbWluOnJlc3RwYXNz',
...     }
>>> url = 'http://localhost:8001/3.0/domains'
>>> response, content = Http().request(url, 'GET', None, headers)
>>> print(response.status)
200

我想提出相同的请求,但是通过Postman。为此,我使用了网址" http://127.0.0.1:8001/3.0/domains"。我在标题中添加了2个字段,预览如下:

GET /3.0/lists HTTP/1.1
Host: 127.0.0.1:8001
Content-Type: application/x-form-urlencode
Authorization: Basic cmVzdGFkbWluOnJlc3RwYXNz
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded

但请求状态仅显示" pending"我没有得到任何答复。 Mailman正在运行python virtualenv。

我也试图在终端中运行以下命令:

curl --header "Content-Type: application/x-form-urlencoded, Authorization: Basic cmVzdGFkbWluOnJlc3RwYXNz" http://localhost:8001/3.0/domains

但输出是:

{
    "title": "401 Unauthorized",
    "description": "The REST API requires authentication"
}

我现在陷入困境,因为我不想使用Mailman的Web UI postorius,但希望从java类调用REST API。我还想知道,如果我在形成Postman请求时犯了一个特别的错误,但我怎么能使用Spring的Rest模板做同样的事情。

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

要修复curl命令,请单独使用-H参数。

curl -H "Content-Type: application/x-form-urlencoded" -H "Authorization: Basic cmVzdGFkbWluOnJlc3RwYXNz" http://localhost:8001/3.0/domains