发送GET请求时收到错误415:不支持的媒体类型

1 投票
1 回答
6428 浏览
提问于 2025-05-10 15:18

我写了一些Python代码,想要和Exact Online进行通信,并且想用Python的urllib2库发送GET和POST请求。

现在,当我尝试发送一个简单的GET请求,并且在请求中加上像'Accept: application/json'这样的头信息时,这在我用测试应用程序(SOAP-UI)测试时是可以正常工作的。

我的Python代码如下:

import urllib2, urllib, json, requests, base64

data = urllib.urlencode({
})
request = urllib2.Request(
url="https://start.exactonline.nl/api/v1/"+divis+"/salesorder/SalesOrderLines?access_token=" + access,
data=data)

base64string = base64.encodestring('%s:%s' % (user,password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
request.add_header("Content-Type", "application/json+xml")
request.add_header("Accept", "application/json+xml")

request= urllib2.urlopen(request)
print request_open
response = request_open.read()
print response

但是结果却是

Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101   5.0\src\debug\tserver\_sandbox.py", line 70, in <module>
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 45, in retrieve_tokens
File "C:\Python27\Lib\urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\Lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\Lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\Lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\Lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\Lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 415: Unsupported Media Type

我尝试过同时使用Content-Type和Accept,也尝试过只用其中一个,但结果都是一样的415响应。

当我只使用

request.add_header("Content-Type", "application/json")

或者

request.add_header("Content-Type", "application/atom+xml")

时,我得到了以下响应:

urllib2.HTTPError: HTTP Error 400: Bad Request

我觉得这可能是问题的根源。

有没有人知道怎么解决这个问题?

顺便提一下,当我用另一个应用程序测试时,响应中有Content-Type: application/atom+xml;charset=utf-8

相关文章:

  • 暂无相关问题
暂无标签

1 个回答

0

我发现有些网页服务器需要你发送一个 User-Agent 头信息才能正常工作。

你可以试着加上这个:

request.add_header("User-Agent", "what u like")

撰写回答