我想通过使用ASP.NET MVC 2控制器操作来构建POX端点。我以为我可以重复使用大量的工作代码并在15分钟内完成。我错了。 我的行为如下:
[HttpPost]
[ValidateInput(false)]
public ContentResult DoSomething(string xml)
ValidateInput属性是必需的,因为在将Xml发布到操作时,您将获得令人讨厌的验证异常。
客户端代码:
var req = (HttpWebRequest)WebRequest.Create(endPoint);
req.Method = "POST";
req.ContentType = "text/xml";
req.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
// ...open request, read response now
这是工作代码。以下请求将发送到端点(fiddler2)
POST http://doerak/Veekijker/Service.aspx/Melding HTTP/1.1
Content-Type: text/xml
Accept-Encoding: gzip,deflate,sdch
Host: theHost
Content-Length: 2220
Expect: 100-continue
Connection: Keep-Alive
Xml=theXml
但是,当我从客户端代码中删除“Accept-Encoding”标头时,我的控制器操作的xml字符串参数为空。
没有accept-encoding标头的请求如下所示
POST http://doerak/Veekijker/Service.aspx/Melding HTTP/1.1
Content-Type: text/xml
Host: theHost
Content-Length: 2220
Expect: 100-continue
Xml=theXml
如何使用我的控制器操作,而无需在客户端上设置Accept-Encoding标头?
答案 0 :(得分:1)
这肯定不是您在请求正文中发送的text/xml
。它是标准格式name=value
对。
或者:
Content-Type
(application/x-www-form-urlencoded
),并使用网址编码转义值。