Передача строки XML в теле службы WCF REST с использованием WebInvoke

Я новичок в 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);
}

// Код реализации

public class XMLService : IXMLService
{
    public string GetXml(string xmlstring)
    {
        return "got 1";
    } 
}    

Клиент

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 = new StreamReader(resp);
string response = rdr.ReadToEnd();

Не могли бы вы указать, что в нем не так?

5
задан Johann67 7 June 2016 в 13:30
поделиться