小编sum*_*umi的帖子

使用WebInvoke在WCF REST服务的主体中传递XML字符串

我是WCF,REST等的新手.我正在尝试编写服务和客户端.我想将xml作为字符串传递给服务并获得一些响应.

我试图将正文中的xml传递给POST方法,但是当我运行我的客户端时,它只是挂起.

当我更改服务以接受参数作为uri的一部分时,它工作正常.(当我将UriTemplate从"getString"更改为"getString/{xmlString}"并传递字符串参数时).

我正在粘贴下面的代码.

服务

[ServiceContract]
public interface IXMLService
{
    [WebInvoke(Method = "POST", UriTemplate = "getString", BodyStyle=WebMessageBodyStyle.WrappedRequest, 
    RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]

    [OperationContract]
    string GetXml(string xmlstring);
}
Run Code Online (Sandbox Code Playgroud)

//实施代码

public class XMLService : IXMLService
{
    public string GetXml(string xmlstring)
    {
        return "got 1";
    } 
}    
Run Code Online (Sandbox Code Playgroud)

客户

string xmlDoc1="<Name>";        
xmlDoc1 = "<FirstName>First</FirstName>";
xmlDoc1 += "<LastName>Last</LastName>";
xmlDoc1 += "</Name>";

HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(@"http://localhost:3518/XMLService/XMLService.svc/getstring");
request1.Method = "POST";
request1.ContentType = "application/xml";
byte[] bytes = Encoding.UTF8.GetBytes(xmlDoc1);        
request1.GetRequestStream().Write(bytes, 0, bytes.Length); 

Stream resp = ((HttpWebResponse)request1.GetResponse()).GetResponseStream();
StreamReader rdr …
Run Code Online (Sandbox Code Playgroud)

xml rest wcf post webinvoke

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

post ×1

rest ×1

wcf ×1

webinvoke ×1

xml ×1