【发布时间】:2016-11-15 00:47:17
【问题描述】:
我正在尝试使用网站 API 更改文章的价格 它的文档位于https://www.mkmapi.eu/ws/documentation/API_1.1:Stock
运行该类时,我收到错误 417 Expectation Failed,文档中将其描述为: 当您的请求有一个没有相应标头的 XML 正文和/或正文不是以文本形式发送,而是以字节表示形式发送时,通常您会收到 417 Expectation Failed HTTP 状态代码。出现 417 的另一个可能原因是,当您发送超过 1.024 字节的正文数据而未在请求中添加标头 Expect: 时。
任何帮助将不胜感激。我也应该说认证不是问题,我可以下载我的文章价格。
public void UpdateMarketPrice(string MarketID, string NewPrice)
{
// https://www.mkmapi.eu/ws/documentation/API_1.1:Stock
String finalResult;
String method = "PUT";
String url = "https://www.mkmapi.eu/ws/v1.1/stock";
HttpWebRequest request = WebRequest.CreateHttp(url) as HttpWebRequest;
OAuthHeader header = new OAuthHeader();
request.Headers.Add(HttpRequestHeader.Authorization, header.getAuthorizationHeader(method, url));
request.Method = method;
request.ContentType = "text/xml; encoding='utf-8'";
XElement xmlDoc =
new XElement("request",
new XElement("article",
new XElement("idArticle", MarketID),
new XElement("idLanguage", 1),
new XElement("comments", "Edited through the API"),
new XElement("count", 7),
new XElement("price", 11),
new XElement("condition", "NM"),
new XElement("isFoil", false),
new XElement("isSigned", false),
new XElement("isPlayset", false)
)
);
String finalXML = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xmlDoc.ToString();
MessageBox.Show(finalXML);
byte[] bytes = Encoding.ASCII.GetBytes(finalXML);
request.ContentLength = bytes.Length;
using (Stream putStream = request.GetRequestStream())
{
putStream.Write(bytes, 0, bytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
finalResult = reader.ReadToEnd();
}
MessageBox.Show(finalResult);
}
【问题讨论】: