2016-03-09 3 views
1

Я создал одно обслуживание WCF restful.Как получить Xml как строку в службе wcf и отправить с помощью javascript?

public string Demo(String xmlString) 
    { 
     //do stuff 
    } 

    [OperationContract] 
    [WebInvoke(ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, Method = "Post", UriTemplate = "Demo", 
    BodyStyle = WebMessageBodyStyle.Wrapped)] 

string Demo(String xmlString); 

Я посылаю через

$(document).ready(function() { 
    $("#btn").click(function() { 
    var bhRequest = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" + 
      "<s:Body>" + 
      "<GetSMC xmlns=\"http://tempuri.org/\">" + 
       "<value><Root>MyValue</Root></value>" + 
      "</GetSMC>" + 
      "</s:Body>" + 
     "</s:Envelope>";   
    var bhReq="<![CDATA[" + bhRequest + "]]>"; 
    alert(bhReq); 

     $.ajax({ 
      url: 'http://localhost:15536/Plugins/MyPlugin/RemoteService/WebService.svc/Demo', 
      type: 'POST', 
      data: '{"xmlString":"'+ bhReq +'"}', 
      contentType: "text/xml", 
      dataType: "xml", 
      success: function (data) { 
       alert(Successfull); 
      }, 
      error: function (data) { 
       alert('Error Occurred'); 
      } 
     }); 
    }); 
}); 

Зов не собирается обслуживать и выдает ошибку

NetworkError: 405 Method Not Allowed

XML Parsing Error: not well-formed Location: moz-nullprincipal:{70ef8883-a52b-4e70-a1ca-bdf5c611c23c} Line Number 1, Column 1:

{"xmlString":"MyValue</Root></value></GetSMC></s:Body></s:Envelope>]]>"}

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

Я также выполнил использование моего запроса обслуживания и формата ответа для json и передачи данных из моего сценария с использованием типа данных json, он также не работает.

Пожалуйста, дайте любое решение, как я могу передать xml в виде строкового значения из javascript в мою службу обслуживания wcf.

+0

@Mozts дал вам правильный ответ. Изменить код: data: '{"xmlString": "' + bhReq + '"}' к данным: xmlString. И добавьте [xml header] (http://stackoverflow.com/questions/7007427/does-a-valid-xml-file-require-an-xml-declaration), например И удалите CDATA. тег. – Roberto

ответ

1

Пользователя, как он у вас есть два варианта один, чтобы изменить ФОС для форматирования сообщений в формате JSON или настроить XML-для мыла правильно

Для варианта одного чтения http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

Для варианта два Вы может быть прочитан https://leonidius2010.wordpress.com/2011/05/16/98/

Для этого варианта я вижу несколько проблем с вашим примером xml, прежде чем вы завершите полный xml в cdata, который неправильный формат.

Я также вижу, что в отправляемой полезной нагрузке отсутствует тип документа xml.

Чтобы получить правильный формат для JavaScript, я бы использовал тестовый клиент wcf в visual studio для вызова конечной точки, а затем скопировал и прошёл отправку полезной нагрузки в мой файл JavaScript.

+0

проголосовали за выявленные множественные проблемы и предложили два решения. – Roberto