我在使用 Android 时遇到了一个奇怪的问题。
我想做一个http调用https://api.moffi.io/api/orders/add.
我正在使用改造并定义了这个方法:
@Headers("Content-Type: application/json")
@POST("orders/add")
fun order(@Header("Authorization") token: String, @Body order: Order): Call<JsonNode>
使用授权令牌调用它时,我得到:
错误:USER_MUST_BE_CONNECTED。
现在当我用 python 做同样的事情时:
order = query(method="POST", url="/orders/add", data=body_order, auth_token=auth_token)
def query( # pylint: disable=too-many-arguments
method: str,
url: str,
auth_token: str,
params: Dict[str, str] = None,
headers: Dict[str, str] = None,
data: Dict[str, Any] = None,
) -> Dict[str, Any]:
"""
Query Moffi API
:param method: Used method (GET, POST, OPTIONS…)
:param url: Moffi endpoint URL
:param auth_token: Authentication token
:param headers: custom headers
:param data: body data
:return: Json response
:raise: RequestException
"""
if not url.startswith(MOFFI_API):
if not url.startswith("/"):
url = f"/{url}"
url = f"{MOFFI_API}{url}"
if params:
url = f"{url}?{urlencode(params)}"
ciheaders = CaseInsensitiveDict()
if headers is not None:
for key, value in headers.items():
ciheaders[key] = value
ciheaders["Accept"] = "application/json"
ciheaders["Authorization"] = f"Bearer {auth_token}"
if method.lower() not in requests.__dict__:
raise RecursionError(f"Unknown method {method}")
method = requests.__dict__[method.lower()]
try:
result = method(url=url, headers=ciheaders, json=data)
except requests.exceptions.RequestException as ex:
raise RequestException from ex
if result.status_code > 399:
raise RequestException(f"Request error {result.status_code} {result.text}")
return result.json()
工作正常。
我猜有差异,但我不明白它是什么。
更多细节,这里是Android代码:https://github.com/moutyque/MoffiSimple
还有蟒蛇:https://github.com/tduboys/moffi
感谢任何帮助