Rajasekaran.D Ответов: 1

Передачи данных JSON строку в службе REST (метод POST) на C#


В моем проекте я должен передать динамическую строку Json в службу WCF Rest. Здесь оба ввода / вывода должны быть в формате Json. Я использую серверный код для передачи своих данных. Вот мой код

В testpage.aspx-файл.CS страницы
string json = "{\"sjSonData\":[{"
                             + "\"log_Id\" : 0,"
                             + "\"user_Id\" : 1249,"
                             + "\"session_key\" : \"dvnoewcdw\","
                             + "\"app_id\" : 1,"
                             + "\"app_version\" :\"1.2.7\","
                             + "\"app_isOnline\" : true,"
                             + "\"app_dateTimeZone\" : \"1997-07-16T19:20:30+01:00\","
                             + "\"log_typeId\" : 1,"
                             + "\"log_description\" : \"valid\""
                         + "},"
                         + "{"
                             + "\"log_Id\" : 1,"
                             + "\"user_Id\" : 1249,"
                             + "\"session_key\" : \"dvnoewcdw\","
                             + "\"app_id\" : 1,"
                             + "\"app_version\" : \"1.2.7\","
                             + "\"app_isOnline\" : true,"
                             + "\"app_dateTimeZone\" : \"1997-07-16T19:20:30+01:00\""
                             +"}]}";

const string url = "http://localhost/RestServiceImpl.svc/jsoninputdata";

       //create an HTTP request to the URL that we need to invoke
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);                
            request.ContentType = "application/json; charset=utf-8"; //set the content type to JSON
            request.Method = "POST"; //make an HTTP POST

            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                //initiate the request
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                var resToWrite = serializer.Deserialize<Dictionary<string, object>>(json);
                streamWriter.Write(restoWrite);
                streamWriter.Flush();
                streamWriter.Close();
            }

            // Get the response.
            WebResponse response = request.GetResponse();                
            var streamReader = new StreamReader(response.GetResponseStream());                
            var result = streamReader.ReadToEnd();


Я новичок в службе WCF. Я не знаю, как передать эти данные в Службу Rest. Здесь мои входные данные отличались друг от друга при каждом звонке.

Код услуги отдых

[ServiceContract]
 public interface IRestServiceImpl
 {
   [OperationContract]
        [WebInvoke(Method = "POST",
            ResponseFormat = WebMessageFormat.Json,
            RequestFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Bare,
            UriTemplate = "jsoninputdata")]
    string jsoninputdata(List<Dictionary<string, object>> rData);
 }    

 public class RestServiceImpl : IRestServiceImpl
 {    
      public jSonResponseData jsoninputdata(List<Dictionary<string, object>> rData)
      {       
          string json = JsonConvert.SerializeObject(rData);
          //Do my stuff here.....    
          return ojSonRes; // Here i need to return my output mentioned below
      }
  }


И мне нужно вернуть данные (вывод), как показано ниже,

Условие 1: Если оба сохранены в БД без каких-либо ошибок,

{"sjSonData": [{"success": true }]}

Условие 2: Предположим, что какие-то данные не удалось сохранить в базе данных, то

{"sjSonData": [ {"log_Id":1, "success": false}, {"log_Id":2, "success":true } ]}

Теперь я получаю такой результат, как,

{"sjSonData":"{}"}

Неужели я делаю что-то не так?!!!! а также, Пожалуйста, объясните, какие все изменения я должен сделать в файле web.config.

1 Ответов

Рейтинг:
9

Rajasekaran.D

Привет,

Я нашел решение этой проблемы. Пожалуйста, обратитесь по следующей ссылке DotNetCodeForU

Спасибо,
Д. Rajasekaran


Jain Nishant

Я сталкиваюсь с той же проблемой, но ссылка, которую вы предоставили, не решает проблему...

Vincent Maverick Durano

создайте новый поток и выделите проблему, которую вы получаете. Не забудьте подробно рассказать о проблеме, предоставить соответствующий код и то, что вы уже пробовали.