Ich habe einen WCF-Dienst wie folgt deklariert:WCF Pfosten-/WebRequest Works - WebClient nicht
[OperationContract, XmlSerializerFormat]
[WebInvoke(UriTemplate = "ProessUpload",
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml)]
void ProcessUpload(ProductConfig stream);
Ich versuche, diesen Dienst zu rufen WebClient verwenden, aber ich bin immer eine Antwort 400 (BadRequest) immer aus der Server. Wenn ich jedoch HttpWebRequest verwende, verwendet WCF meinen Post und antwortet korrekt mit 200. Ich bin auch in der Lage, eine Anfrage erfolgreich zu erstellen, indem ich Fiddler benutze, um den WCF-Service aufzurufen.
WebClient-Code
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/xml");//; charset=utf-8
try
{
string result = webClient.UploadString("http://jeff-laptop/SalesAssist.ImageService/Process", "POST", data2);
}
catch (Exception ex)
{
var e = ex.InnerException;
}
HttpWebRequest Code
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://jeff-laptop/SalesAssist.ImageService/Process");
request.ContentType = "application/xml";
request.Method = "POST";
request.KeepAlive = true;
using (Stream requestStream = request.GetRequestStream())
{
var bytes = Encoding.UTF8.GetBytes(data2);
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
}
var response = (HttpWebResponse)request.GetResponse();
var abc = new StreamReader(response.GetResponseStream()).ReadToEnd();
Die XML, die
var data2 = @"<Product><Sku>3327</Sku><NameProduct</Name><Category>Bumper</Category><Brand Id='3'><Collection>14</Collection></Brand></Product>";
Warum ist gesendet wird, dass HttpWebRequest funktioniert und WebClient nicht? Ich kann keinen echten Unterschied in den gesendeten Kopfzeilen über Fiddler sehen.
ich denke, es in der Zeichenfolge eines Elements nach unten, um Sonderzeichen kommt. Wenn ich "Comfort®" im Produktnamen übergebe, funktioniert es mit HttpWebRequest - funktioniert jedoch nicht mit dem WebClient. Führt der WebClient die Codierung vor dem Senden durch? –
Ich hatte eine andere Art von Problem, aber diese Frage gab mir die Chance, meinen Code zu korrigieren. –