2013-04-30 5 views
2

Я создал успокоительный WebService, как показано нижеКак назвать отдых FuL WebService с помощью HttpWebRequest и PostData

Opertation Контракт

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,ResponseFormat = WebMessageFormat.Json, UriTemplate = "/PushNotification")] 
     [OperationContract] 
     void PushNotification(MailInformation mailInformations); 

MailInformations класс

[DataContract] 
    public class MailInformation 
    { 
     [DataMember] 
     public List<string> To { get; set; } 
     [DataMember] 
     public string SenderEmail { get; set; } 
     [DataMember] 
     public string Subject { get; set; } 
    } 

Как может я вызов этой услуги с помощью HttpWebrequest?

My Service Url

локальный/Чат/ChatService.svc/PushNotification

+0

это служба отдыха. Я думаю, что служба отдыха не прокси – JEMI

ответ

4
MailInformation mi = new MailInformation(){ 
    SenderEmail = "[email protected]", 
    Subject = "test", 
    To = new List<string>(){"[email protected]"} 
}; 

var dataToSend = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(mi)); 

var req = HttpWebRequest.Create("http://localhost/Chat/ChatService.svc/PushNotification"); 

req.ContentType = "application/json"; 
req.ContentLength = dataToSend.Length; 
req.Method = "POST"; 
req.GetRequestStream().Write(dataToSend,0,dataToSend.Length); 

var response = req.GetResponse(); 
+0

, в которой пространство имен JsonConvert класс? – JEMI

+0

Извините .. Я использовал [Json.net] (http://json.codeplex.com/) Но вы также можете использовать [JavaScriptSerializer] (http://msdn.microsoft.com/en-us/library/system. web.script.serialization.javascriptserializer.aspx) – I4V

+0

Да. Я понял. Я попробовал Newtonsoft.Json – JEMI

0

Вы можете избавить себя от хлопот использования HttpWebRequest и просто использовать RestSharp.

var client = new RestClient("http://localhost"); 
var request = new RestRequest("Chat/ChatService.svc/PushNotification"); 
RestResponse response = client.Execute(request); 
var content = response.Content; // raw content as string 
+0

Как я могу отправить данные в мой класс mailInformations? – JEMI

+0

@JEMI вот пример: http://stackoverflow.com/questions/6312970/restsharp-json-parameter-posting –

+0

@JEMI вы также можете отправить объект напрямую, если хотите: http://stackoverflow.com/questions/ 9966521/restsharp-пост-объект-к-ФОС –