2010-10-20 40 views
2

我希望能够让我的Web服务接受多个POST参数,其中一些参数是XML。这可能吗?以下代码将生成服务器错误:多个POST参数,其中一些包含XML

WebResponse resp =(WebResponse)req.GetResponse();


string programId = "1"; 
     string statusMessages = statusMessagesXML.ToString(SaveOptions.DisableFormatting);

string postData = "programId=" + programId; 
    postData += "&statusMessages=" + HttpUtility.UrlEncode(statusMessages); 
    string data = postData; 

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); 
    req.ContentType = "application/x-www-form-urlencoded"; 
    req.ContentLength = data.Length; 
    req.Method = "POST"; 
    StreamWriter writer = new StreamWriter(req.GetRequestStream()); 
    writer.Write(data); 
    writer.Flush(); 
    writer.Close(); 

    String result = null; 
    WebResponse resp = (WebResponse)req.GetResponse(); 
    Stream readstream = resp.GetResponseStream(); 
    StreamReader read = new StreamReader(readstream); 

    result = read.ReadToEnd(); 

感谢。

+0

什么是服务器错误?你也提到想要调用一个“Web服务”,但是这看起来并不像你正在与WebService交互。也许你只是用通用的HTTP意思来表示它? – kaliatech 2010-10-20 21:49:53

+0

当您将状态消息作为简单字符串而不是XML传递时,它会起作用吗? – kaliatech 2010-10-20 21:50:47

+0

是的。看起来 abc”就没关系。此外,它是一个RESTful服务,而不是.NET SOAP Web服务。 – 2010-10-21 05:08:20

回答

-1

的问题是:

req.ContentType = "application/x-www-form-urlencoded"; 

这告诉服务器你的数据是URL编码,和 '<' 是URL元字符。要么对您的数据进行URLEncode编码,要么在数据不存在时不告诉服务器数据是URLEncoded。

+0

上面的HttpUtility.UrlEncode(statusMessages)应该对它进行编码。 – 2010-10-21 21:34:03

相关问题