问题描述
尝试创建提要文档 (here ),但收到 InvalidInput
错误代码。
身份验证运行良好(我尝试了其他端点并且可以正常工作)所以我认为标头不是问题。
这是我的示例代码:
endpoint = 'https://sellingpartnerapi-eu.amazon.com/Feeds/2020-09-04/documents'
body = {
"contentType": "text/tab-separated-values; charset=UTF-8"
}
resp = requests.post(
endpoint,auth=self.amazon_auth.auth,headers=self.amazon_auth.headers,json=body
)
return resp
响应代码:
{'errors': [{'code': 'InvalidInput','message': 'Invalid Input','details': ''}]}
我也尝试使用不同的 contentType
和字符集(如 text/plain
),但我收到相同的错误代码!
这是Submit feed tutorial的第一步。
我正在尝试创建供稿,以便让 cartonIds
下载我通过亚马逊卖家中心创建的货件的标签。
任何提示,都非常欢迎帮助!
谢谢!
解决方法
我使用 RestSharp restRequest1.AddParameter(....);给了我和你一样的错误无效输入 但下面这行给了我一个响应值 restRequest1.AddJsonBody(new { contentType = "text/xml; charset=UTF-8" }); 它将 obj 序列化为 json 格式并将其添加到请求正文中。
,我通过以下方式解决了这个问题:
requests.post(data=json.dumps(body))
还要确保您也通过了正文进行签名
,这个 C# 代码片段对我有用,我成功上传了一个提要
我的上传方法:
private static bool UploadFile(byte[] encrypted,string url)
{
bool isUploaded = false;
var contentType = "text/tab-separated-values; charset=UTF-8";
var parameter = new Parameter
{
Name = contentType,Value = encrypted,Type = ParameterType.RequestBody
};
var restRequest = new RestRequest(Method.PUT);
restRequest.Parameters.Add(parameter);
var restClient = new RestClient(url);
var response = restClient.Execute(restRequest);
isUploaded = response.StatusCode == System.Net.HttpStatusCode.OK;
return isUploaded;
}