首先,我没有使用 Xero api。我认为这比 Xero 更像是一个 OAuth2 问题。
不太确定问题是一般的 OAuth2 问题还是 OAuth2 的 Xero 实现。我可以成功地进行身份验证,从 Xero 获取我的令牌等。我什至可以成功地向他们的端点发出获取发票和联系人的请求。我的问题是尝试发布任何内容,即创建发票。
服务器响应 400 Bad request。通过将 XML 放入他们的 API 测试器中,我已经通过实际发布数据确认是正确的,并且一切都很好。
发布请求不应该是httpwebequest
带有查询字符串的标准 (POST)?oauth_signature=[sig here]
以及通过流编码和发送的实际发布数据 URL 吗?我的实施是否正确,我应该在其他地方寻找问题吗?以表格形式发送的数据是否应该包含在签名中?
{
byte[] reqData = encode.GetBytes(postData);
HttpWebRequest request = WebRequest.CreateHttp(url + querystring) as HttpWebRequest;
request.Method = "POST";
try {
using (Stream stream = request.GetRequestStream) {
stream.Write(reqData, 0, reqData.Length);
}
using (HttpWebResponse response = request.GetResponse) {
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
dynamic responseFromServer = reader.ReadToEnd();
return responseFromServer;
}
} catch (Exception ex) {
}
}