2013-04-17 2 views
0

У меня есть служба wcf. Мне нужно сохранить пользователей с ним и сделать ответ. Это мой метод:Формат сообщения JSON для службы WCF

[OperationContract] 
    [WebInvoke(UriTemplate = "SaveUsersCode", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] 
    Response SaveUsers(UserCode code); 

Класс UserCode имеет только два свойства строки. Я использую Google Postman для проверки. Я пробовал все и всегда получаю сообщение об ошибке «Сервер обнаружил ошибку при обработке запроса».

Каков правильный формат отправки сообщений JSON?

+0

'Я попытался everything' Если бы мы знали что вы пробовали, мы могли бы дать лучшие ответы. – I4V

+0

Я пробовал {"companyName": "cocaCola", "imsi": "3324", "msisdn": "21331"}, {companyName: "cocaCola", "imsi": 3324, msisdn: "21331"} , '{"companyName": "cocaCola", "imsi": "3324", "msisdn": "21331"}', {"UserCode": [{"companyName": "cocaCola", "imsi": "3324 "," msisdn ":" 21331 "}]} – Flipper

+0

Взгляните на это: [Почему я не могу получить доступ к веб-сервису WCF с помощью Javascript?] (http://stackoverflow.com/questions/14328466/why-cant -i-access-my-wcf-web-service-with-javascript/14328818 # 14328818) –

ответ

1

Flipper я написал код сервера с помощью шаблона

[ServiceContract] 
public class MyServer 
{ 
    public void Start() 
    { 
     Task.Factory.StartNew(() => 
     { 
      WebServiceHost ws = new WebServiceHost(this.GetType(), new Uri("http://0.0.0.0/Test")); 
      ws.Open(); 
     }); 
    } 

    [OperationContract] 
    [WebInvoke(UriTemplate = "SaveUsersCode", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] 
    string SaveUsers(UserCode code) 
    { 
     return "GOT: " + code.companyName + "," + code.imsi; 
    } 

    public class UserCode 
    { 
     public string companyName; 
     public string imsi; 
    } 
} 

и назвал ее

//Start server 
var m = new MyServer(); 
m.Start(); 
Task.Delay(1000); 

//Call server method 
using (var wc = new WebClient()) 
{ 
    wc.Headers[HttpRequestHeader.ContentType] = "application/json"; 
    var obj = new { companyName = "cocaCola",imsi="3324" }; 
    string response = wc.UploadString("http://localhost/Test/SaveUsersCode", new JavaScriptSerializer().Serialize(obj)); 
    Console.WriteLine(response); 
} 

та-да, это работает

+0

Не работает для меня, я все еще получаю плохую синтаксическую ошибку в json - действительно не знаю что сейчас – Flipper

+0

Теперь все работает отлично. спасибо – Flipper

Смежные вопросы