I API unter Verwendung der Websites für sie die Dokumentation Wenn er gestartet bin versucht, den Preis eines Artikels zu ändern, bei https://www.mkmapi.eu/ws/documentation/API_1.1:StockDer Versuch, mit einem PUT-Anfrage hochladen
der Klasse I einen Fehler 417 Expectation erhalten fehlgeschlagen, das ist beschrieben in der Dokumentation als: In der Regel erhalten Sie einen 417 Expectation Failed HTTP-Statuscode, wenn Ihre Anfrage einen XML-Body ohne den entsprechenden Header und/oder den Körper nicht als Text gesendet hat, sondern seine Byte-Darstellung. Ein weiterer möglicher Grund für eine 417 ist, wenn Sie Body-Daten mit mehr als 1.024 Bytes senden, ohne den Header zu ergänzen: Expect: auf Ihre Anfrage.
Jede Hilfe wäre willkommen. Ich sollte auch sagen, dass die Authentifizierung nicht das Problem ist, dass ich meine Artikelpreise herunterladen kann.
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);
}
Erstaunlich, dass funktioniert! Ich danke dir sehr! –
Gut zu hören, es funktioniert! Ich habe das gleiche Problem mit mkmapi gestern, aber ich hatte keine Zeit, um die Lösung für mich selbst zu versuchen, da ich bei der Arbeit bin. – Tim