WCF REST при добавлении данных с использованием неверного запроса POST или PUT 400 - PullRequest
1 голос
/ 28 октября 2009

HI Как добавить данные, используя архитектуру wcf rest. Я не хочу использовать channelfactory для вызова моего метода. Нечто похожее на веб-запрос и веб-ответ, используемый для GET. Нечто похожее на ajax WebServiceProxy restInvoke Или я всегда должен использовать реализацию Webchannelfactory

Я получаю запрос 400 BAD, используя следующий код

Dim url As String = "http://localhost:4475/Service.svc/Entity/Add" Dim req As WebRequest = WebRequest.Create (url) req.Method = "POST" req.ContentType = "application / xml; charset = utf-8" req.Timeout = 30000 req.Headers.Add ("SOAPAction", url)

    Dim xEle As XElement
    xEle = <Entity xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                 <Name>Entity1</Name>
             </Entity>

    Dim sXML As String = xEle .Value
    req.ContentLength = sXML.Length
    Dim sw As New System.IO.StreamWriter(req.GetRequestStream())
    sw.Write(sXML)
    sw.Close()

    Dim res as HttpWebResponse = req.GetResponse()

    Sercice Contract is as follows

   <OperationContract()> _
   <WebInvoke(Method:="PUT", UriTemplate:="Entity/Add")> _
   Function AddEntity(ByVal e1 As Entity)

     DataContract is as follows

    <Serializable()> _
    <DataContract()> _
    Public Class Entity
      private m_Name as String
     <DataMember()> _
      Public Property Name() As String
      Get
        Return m_Name
      End Get
      Set(ByVal value As String)
        m_Name = value
      End Set
      End Property
    End Class

спасибо

Ответы [ 2 ]

0 голосов
/ 28 октября 2009

Я подозреваю, что в вашем XML либо отсутствуют некоторые пространства имен, либо вы не форматируете XML, как того требует DataContractSerializer.

Попробуйте просто использовать DataContractSerializer для десериализации экземпляра вашего класса Entity и посмотреть, как именно должен выглядеть XML.

0 голосов
/ 28 октября 2009

В REST вы создаете ресурс (т. Е. Добавляете данные) либо используя HTTP POST (если сервер назначает имя ресурса), либо HTTP PUT (если клиент назначает имя ресурса). Вы обновляете ресурс, используя PUT, и удаляете его, используя DELETE. Изменяется только метод HTTP.

Роб Бэгби имеет серию из 11 частей на REST в WCF .

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