HI 如何使用wcf rest架构添加数据。 我不想使用channelfactory来调用我的方法。 类似于用于GET的webrequest和webresponse。类似于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
感谢
答案 0 :(得分:0)
在REST中,您可以使用HTTP POST(如果服务器分配资源名称)或HTTP PUT(如果客户端分配资源名称)创建资源(即添加数据)。您使用PUT更新资源,并使用DELETE删除它。只有HTTP方法会更改。
Rob Bagby在REST in WCF上有11部分系列。
答案 1 :(得分:0)
我怀疑你可能要么缺少XML中的某些命名空间,要么就像DataContractSerializer想要的那样没有格式化XML。
尝试使用DataContractSerializer反序列化Entity类的实例,并确切了解XML应该是什么样子。