Как в прошлом опубликовать XML-поток в wcf http rest service, используя HttpWebRequest - PullRequest
2 голосов
/ 08 ноября 2010

Я пытаюсь отправить XML-данные HTTPWebRequest POST в мою службу WCF.
Однако при установке точки останова в моей службе она срабатывает, но моя widgetStream пуста, когда я пытаюсь ее прочитать.Даже если я прочитал это из StreamReader.

Кто-нибудь знает, что я делаю неправильно?

Моя служба WCF выглядит следующим образом:

    [WebInvoke(UriTemplate = "widgets", Method = "POST"]
    public void CreateWidget(Stream widgetStream)
    {
        try
        {
            XElement e = XElement.Load(widgeStream);
            //...
        }
        catch (Exception ex)

            throw;
        }
    }

Мой клиент пытается подключиться и опубликовать ресурс XML наHTTP URL примерно так:

public static void CreateWidget(Widget myWidget)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:29858/myservice/widgets");
    request.Method = "POST";
    request.ContentType = "text/xml";
    string xml = myWidget.ToXML().ToString();
    request.ContentLength = xml.Length;
    Stream s = request.GetRequestStream();
    StreamWriter sr = new StreamWriter(s);
    sr.Write(xml);
    sr.Close();
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}

Если кто-нибудь может помочь, это будет оценено!

1 Ответ

1 голос
/ 04 января 2011
[WebInvoke(UriTemplate = "widgets", Method = "POST", RequestFormat=WebMessageFormat.Xml, BodyStyle=WebMessageBodyStyle.Bare] 
[XmlSerializerFormat]    
public void CreateWidget(XElement widget){...}

Попробуйте это к вашим услугам.Я только столкнулся с подобной проблемой на этой неделе.Я не пробовал использовать объект HTTPWebRequest, но я могу опубликовать необработанный XML в сервис, используя Fiddler.

Возможно, вам потребуется изменить Content-Type на клиенте на «application / xml» вместо «text / xml».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...