En passant, la chaîne XML dans le corps de la WCF REST service à l'aide de WebInvoke

Je suis un débutant de la WCF, REPOS, etc. Je suis en train d'écrire un service et un client.
Je veux passer xml comme une chaîne de caractères pour le service et obtenir une réponse en retour.

Je suis en train de passer le xml dans le corps de la méthode POST, mais quand je lance mon client, il se bloque.

Il fonctionne très bien quand je change de service pour accepter le paramètre comme une partie de l'uri.
(quand je change de UriTemplate de "getString" à "getString/{xmlString}" et passer un paramètre de chaîne).

Je suis coller le code ci-dessous.

Service

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

    [OperationContract]
    string GetXml(string xmlstring);
}

//Implementaion Code

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

Client

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();

Quelqu'un pourrait s'il vous plaît signaler ce qui est mal à cela?

Ça va changer si vous utilisez XElement au lieu de chaîne de caractères comme paramètre? Également définir Content-Length de la demande.
Je vous remercie pour votre réponse. J'ai essayé d'utiliser XElement. pas de chance!!

OriginalL'auteur sumi | 2011-06-06

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *