Я пытаюсь изменить цену изделия, используя сайты API документация для него находится в https://www.mkmapi.eu/ws/documentation/API_1.1:StockПопытка загрузить с запросом PUT
При запуске класса я получаю сообщение об ошибке 417 Expectation Failed, который описанных в документации: Обычно вы получаете код состояния статуса 417 с ожиданием, если ваш запрос имеет тело XML без соответствующего заголовка и/или тела, не отправленного как текст, а его байтового представления. Другой возможной причиной для 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);
}
Удивительно, что работает! Спасибо огромное! –
Рад это слышать! Я фактически столкнулся с той же проблемой с mkmapi вчера, но у меня не было времени, чтобы попытаться разрешить для себя, так как я на работе. – Tim